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正常工作.无法找到任何理由为什么会这样.
你可以,只是你要附加到切片,这意味着你添加的元素是results[1],并且results[0]是一个nil指针(指针的默认值).
你可以results := make([]*Circle, 0, 1)给它一个容量为1但长度为零,或者你可以做results := []*Circle{}(最紧凑),或者你可以简单地保留你指定的版本results[0],因为它工作得很好.