Go 从结构中的嵌入切片访问值
我试图从结构中的嵌入片访问值。如果可能的话,我如何通过索引来实现这一点,而不显式地调用私有嵌入对象(从包外部访问时,这甚至不是一个选项)Go 从结构中的嵌入切片访问值,go,slice,Go,Slice,我试图从结构中的嵌入片访问值。如果可能的话,我如何通过索引来实现这一点,而不显式地调用私有嵌入对象(从包外部访问时,这甚至不是一个选项) package main import ( "fmt" ) type A struct { aSlice } type aSlice []string func main() { a := A{[]string{"hello", "world"}} fmt.Println(a.aSlice[0]) // works, b
package main
import (
"fmt"
)
type A struct {
aSlice
}
type aSlice []string
func 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
}
我想我在这篇文章中找到了答案: 嵌入时,只能“提升”字段和方法。对于 其他一切,它们只是另一个领域 在这种情况下,结构相当于:
type A struct {
aSlice aSlice
}
这就解释了为什么它的值只能通过
A.aSlice
索引来访问。如果将切片声明为导出类型,则可以访问嵌入的切片。但你仍然不能做索引
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])
}
还涉及: