2016-08-21 25 views
1

構造体の埋め込みスライスから値にアクセスしようとしています。どのように私はインデックスを介して、プライベート埋め込みオブジェクトを明示的に呼び出すことなくこれを行うことができますか(それはパッケージ外からアクセスする際にオプションでさえありません)、それはまったく可能ですか?構造体の埋め込みスライスからの値へのアクセス

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 
} 
+0

[Go:プリミティブ型の埋め込みですか?](http://stackoverflow.com/questions/38811253/go-embedding-a-primitive-type) – icza

答えて

1

私は、私がこの記事で答えを見つけたと思う:あなたは埋め込む際golang anonymous field of type map

のみフィールドやメソッドは「昇格」することができます。 の場合は、他のすべてのフィールドはちょうど別のフィールドとして機能します。

この場合、構造体は相当のようになります。その値はA.aSliceインデックス経由でのみアクセス可能である理由理にかなって

type A struct { 
    aSlice aSlice 
} 

1

エクスポートされたタイプとしてスライスを宣言すると、埋め込みスライスにアクセスできます。しかし、インデックス作成はまだできません。

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]) 
} 
関連する問題