请查看以下代码段
// 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},
}
我创建了一个包含一些属性的结构。使用收件人类型创建切片后。切片收件人是否保留值或引用类型?
似乎是价值类型。
答案 0 :(得分:2)
切片实际上是指向数组一部分的(某种)指针(参见slice usage and internals),因此对于数组,项是指定类型的值。
答案 1 :(得分:2)
它会保留您宣布切片的任何内容。在您的情况下,您声明为[]Recipient
,因此它会将数据保留为值。
如果您将切片声明为[]*Recipient
,那么它将保留引用(*Recipient
),而不是Recipient
值。