为了账号安全,请及时绑定邮箱和手机立即绑定

正确处理“切片结构”?

正确处理“切片结构”?

Go
紫衣仙女 2022-09-05 09:22:28
我创建了一个切片结构。但是,为什么我不能追加或输出值?package mainimport "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)}错误消息为:“无效操作:切片结构[0](类型*切片结构不支持索引)”
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

您需要在获取元素之前取消引用指针

(*slicestruct)[0]

因为它是您要从中访问元素的实际切片,而不是指针。对于指向数组的指针(不是此处的切片),此步骤将自动完成。

下面是有关指向切片和数组的指针的相关问题:指向切片和数组的指针

或者,可以删除 when 声明变量,使其不是指针类型。在我们在这里看到的简短示例中,没有什么需要指针。通常,指向切片类型的指针的合法使用很少见。&


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信