我正在尝试从结构中的嵌入式切片访问值。如果可能的话,我如何通过索引来做到这一点,并且不显式调用私有嵌入对象(从包外部访问时甚至不是一个选项)?package mainimport ( "fmt")type A struct { aSlice}type aSlice []stringfunc main() { a := A{[]string{"hello", "world"}} fmt.Println(a.aSlice[0]) // works, but can't be accessed outside package fmt.Println(a[0]) // doesn't work, but looking for this something like this}
2 回答

饮歌长啸
TA贡献1951条经验 获得超3个赞
我想我在这篇文章中找到了答案:golang anonymous field of type map
嵌入时,只能“提升”字段和方法。对于其他一切,它们只是另一个领域。
在这种情况下,结构将相当于:
type A struct { aSlice aSlice }
这是有道理的,为什么它的值只能通过A.aSlice
索引访问。

精慕HU
TA贡献1845条经验 获得超8个赞
如果将切片声明为导出类型,则可以访问嵌入的切片。但是你仍然不能做索引。
package a
type Slice []string
type A struct {
Slice
}
package main
import "a"
func main() {
_a := a.AB{[]string{"hello", "world"}}
fmt.Println(_a.Slice[0])
}
- 2 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消