我正在嘗試從結(jié)構(gòu)中的嵌入式切片訪問值。如果可能的話,我如何通過索引來做到這一點,并且不顯式調(diào)用私有嵌入對象(從包外部訪問時甚至不是一個選項)?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條經(jīng)驗 獲得超3個贊
我想我在這篇文章中找到了答案:golang anonymous field of type map
嵌入時,只能“提升”字段和方法。對于其他一切,它們只是另一個領(lǐng)域。
在這種情況下,結(jié)構(gòu)將相當于:
type A struct { aSlice aSlice }
這是有道理的,為什么它的值只能通過A.aSlice
索引訪問。

精慕HU
TA貢獻1845條經(jīng)驗 獲得超8個贊
如果將切片聲明為導(dǎo)出類型,則可以訪問嵌入的切片。但是你仍然不能做索引。
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 關(guān)注
- 194 瀏覽
添加回答
舉報
0/150
提交
取消