首页 > 解决方案 > 如何附加到由指针标识的数组

问题描述

以下代码段错误 - 应该如何表达?

package main

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

标签: arrayspointersgoslice

解决方案


使您的指针示例工作

声明后,您的指针变量将是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)

推荐阅读