为什么不能追加指向数组的指针?

Sha*_*tel 2 pointers go

package main

import "fmt"

type Circle struct {
  x string
}

func main() {
    circle := Circle{x: "blah"}
    results := make([]*Circle, 1)
    results = append(results, &circle)
    fmt.Printf("Here: %s\n", results[0].x)
}
Run Code Online (Sandbox Code Playgroud)

如果我改线results = append(results, &circle)results[0] = &circle正常工作.无法找到任何理由为什么会这样.

hob*_*bbs 6

你可以,只是你附加到切片,这意味着你添加的元素是results[1],并且results[0]是一个nil指针(指针的默认值).

你可以results := make([]*Circle, 0, 1)给它一个容量为1但长度为零,或者你可以做results := []*Circle{}(最紧凑),或者你可以简单地保留你指定的版本results[0],因为它工作得很好.