以下代码段错误 - 应该如何表述?
package main
func main() {
var a *[]int
*a = make([]int, 0)
*a = append(*a, 1)
}
最佳答案
让你的指针示例工作
声明后,您的指针变量将为nil,
,因此您无法设置指向的值(它还没有指向任何地方)。
您必须首先为指向的值分配内存,例如使用内置 new()
功能:
var a *[]int
a = new([]int)
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用 slice composite literal ,并取其地址:
var a *[]int
a = &[]int{}
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用 slice 类型的另一个变量[]int
,并将其地址分配给a
:
var a *[]int
var b []int
a = &b
*a = make([]int, 0)
*a = append(*a, 1)
放弃指针
但是要知道使用 slice 不需要指针。您可以将 make()
的返回值赋给一个非指针 slice 变量:
var a []int
a = make([]int, 0)
a = append(a, 1)
关于arrays - 如何附加到由指针标识的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51650441/