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])
}
还涉及: