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

标签 pointers go

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

我写

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/

相关文章:

go - 如何关闭 channel 并等待多个 http 响应?

mongodb - 编码(marshal)和编码(marshal) BSON

go - 如何让多个对象从一个go子程序中获取数据

C++,在for循环中分配空间,可能的内存泄漏验证

C++:此代码编译,但抛出运行时检查失败 #2 - 变量 'num' 周围的堆栈已损坏。发生

matlab - 使用 MATLAB 从另一个应用程序中的控件获取文本

go - 控制鼠标和键盘的Golang?

debugging - 如何可视化堆转储?

c - 使用三个指针反转字符串中的单词?

c - 从文本中删除数字的程序