数组中的引用类型

时间:2014-07-27 14:22:58

标签: go

请查看以下代码段

// Prepare some data to insert into the template.
type Recipient struct {
    Name, Gift string
    Attended   bool
}
var recipients = []Recipient{
    {"Aunt Mildred", "bone china tea set", true},
    {"Uncle John", "moleskin pants", false},
    {"Cousin Rodney", "", false},
}

我创建了一个包含一些属性的结构。使用收件人类型创建切片后。切片收件人是否保留值或引用类型?

似乎是价值类型。

2 个答案:

答案 0 :(得分:2)

切片实际上是指向数组一部分的(某种)指针(参见slice usage and internals),因此对于数组,项是指定类型的值。

答案 1 :(得分:2)

它会保留您宣布切片的任何内容。在您的情况下,您声明为[]Recipient,因此它会将数据保留为值。

如果您将切片声明为[]*Recipient,那么它将保留引用(*Recipient),而不是Recipient值。