gpt4 book ai didi

pointers - 在golang中使用指针进行多次分配和创建

转载 作者:行者123 更新时间:2023-12-01 21:13:54 24 4
gpt4 key购买 nike

对于这个简单的问题,语言规范对我来说太难解析了,所以在这里问。

我写

func take_arg(x *int64) {
*x,_ = strconv.ParseInt( os.Args[1], 10,64 )
}

哪个有效。

但是,如果我尝试处理该错误
func take_arg(x *int64) {
*x,problem := strconv.ParseInt( os.Args[1], 10,64 )
fix(problem)
}

由于 non-name *x on left side of :=,我被编译器阻止了。

-

编辑:通常可以使用 x,problem := …

——-

是什么赋予了?我该怎么办?

最佳答案

func take_arg(x *int64){...} => x *int64x int64heap值的指针。

Package: strconv
func ParseInt(s string, base int, bitSize int) (i int64, err error)

返回 int64error的副本(新的不可变实例),您不能将return value分配给 x pointer。您必须使用指针作为指针:
func take_arg(x *int64) {
if i, err := strconv.ParseInt(os.Args[1], 10, 64); err != nil {
*x = fix(err) // or other action, for example: *x = 777
} else {
*x = i
}
}

关于pointers - 在golang中使用指针进行多次分配和创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61371459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com