以下代码段错误-应该如何措辞?package mainfunc main() { var a *[]int *a = make([]int, 0) *a = append(*a, 1)}
1 回答
侃侃无极
TA贡献2051条经验 获得超10个赞
使您的指针示例正常工作
声明后,您的指针变量将为,nil,因此您无法设置指向的值(它尚未指向任何位置)。
您必须首先为指向的值分配内存,例如,使用内置new()函数:
var a *[]int
a = new([]int)
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用切片复合文字,并获取其地址:
var a *[]int
a = &[]int{}
*a = make([]int, 0)
*a = append(*a, 1)
另一种选择是使用切片类型的另一个变量[]int,并将其地址分配给a:
var a *[]int
var b []int
a = &b
*a = make([]int, 0)
*a = append(*a, 1)
放弃指针
但是要知道,使用切片不需要指针。您可以只将返回值分配给make()非指针切片变量:
var a []int
a = make([]int, 0)
a = append(a, 1)
添加回答
举报
0/150
提交
取消