这是一个创建于 2018-04-03 20:54:16 的主题,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
new(int)
是一个指针 应该改成这样吧func main() { arr := [2]int{new(int), new(int)} arr[0] = 2 arr[1] = 3 fmt.Printf("%v", arr) } 输出的结果是数组中每个值相对应的地址:[0xc42000e250 0xc42000e258] 输出arr会报错: invalid indirect of arr (type [2]*int),请教。
func main() { arr := [2]int{new(int), new(int)} arr[0] = 2 arr[1] = 3 fmt.Printf("%v", arr) } 输出的结果是数组中每个值相对应的地址:[0xc42000e250 0xc42000e258] ;而输出arr会报错: invalid indirect of arr (type [2]int),请教。
你这段代码编译都编译不过
这里 arr 是个 int 数组,包含2个类型是 int 的元素。
new(int) 返回一个*int,也就是指向 int 变量的指针
你在初始化 int 数组时用 *int 来赋值肯定不对啊
如果你需要 arr 是一个 int 数组,包含2个类型是 int 元素,那么楼上已经给出了正确的代码实现
在这种情况下
这样复制也是不行的,因为 arr[0] 是一个指针,你不能直接把一个整形常数赋给一个指针。
如果你是要给 arr[0] 这个指针所指向的内存赋值,那么需要
我写错误了,是这样的:func main() { arr := [2]int{new(int), new(int)} arr[0] = 2 arr[1] = 3 fmt.Printf("%v", arr) } 输出的结果是数组中每个值相对应的地址:[0xc42000e250 0xc42000e258] ;而输出arr(即fmt.Printf("%v",arr))会报错: invalid indirect of arr (type [2]int);请问是什么原因?
你写的还是不对,还是编译不过
只要这样写就编译不过,因为 new(int) 的类型是指针,不能给 int 数组赋值