正确处理 "Slice Struct"? (戈朗)
Handle "Slice Struct" properly? (golang)
我创建了一个切片结构。
但为什么我不能追加或输出值?
package main
import "fmt"
type Slicestruct []struct {
num []int
emptynum []int
}
func main() {
slicestruct := &Slicestruct{
{[]int{1, 2, 3}, []int{}},
{[]int{4, 5, 6}, []int{}},
}
// is working:
fmt.Println(slicestruct)
// isn't working:
fmt.Println(slicestruct[0].num[0])
// isn't working:
slicestruct[0].emptynum = append(slicestruct[0].emptynum, 99)
}
错误信息是:“无效操作:slicestruct[0](类型 *Slicestruct 不支持索引)”
您需要在获取元素之前取消引用指针
(*slicestruct)[0]
因为它是您从中访问元素的实际切片,而不是指针。
对于指向数组的指针(不是你这里的切片),这一步会自动完成。
这里有一个关于切片和数组指针的相关问题:
或者,您可以在声明变量时删除 &
,使其不是指针类型。在我们在这里看到的简短示例中,没有什么需要指针。通常,很少有合法使用指向切片类型的指针。
我创建了一个切片结构。 但为什么我不能追加或输出值?
package main
import "fmt"
type Slicestruct []struct {
num []int
emptynum []int
}
func main() {
slicestruct := &Slicestruct{
{[]int{1, 2, 3}, []int{}},
{[]int{4, 5, 6}, []int{}},
}
// is working:
fmt.Println(slicestruct)
// isn't working:
fmt.Println(slicestruct[0].num[0])
// isn't working:
slicestruct[0].emptynum = append(slicestruct[0].emptynum, 99)
}
错误信息是:“无效操作:slicestruct[0](类型 *Slicestruct 不支持索引)”
您需要在获取元素之前取消引用指针
(*slicestruct)[0]
因为它是您从中访问元素的实际切片,而不是指针。 对于指向数组的指针(不是你这里的切片),这一步会自动完成。
这里有一个关于切片和数组指针的相关问题:
或者,您可以在声明变量时删除 &
,使其不是指针类型。在我们在这里看到的简短示例中,没有什么需要指针。通常,很少有合法使用指向切片类型的指针。