我如何追加到指针标识的数组

时间:2018-08-02 09:46:26

标签: arrays pointers go slice

以下代码段错误-应该如何措辞?

package main

func main() {
    var a *[]int
    *a = make([]int, 0)
    *a = append(*a, 1)
}

1 个答案:

答案 0 :(得分:3)

使指针示例正常工作

声明后,您的指针变量将为nil,,因此您无法设置指向的值(它尚未指向任何位置)。

您必须首先为目标值分配内存,例如内置的new()函数:

var a *[]int
a = new([]int)
*a = make([]int, 0)
*a = append(*a, 1)

另一种选择是使用切片composite literal,并获取其地址:

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)
相关问题