2016-08-21 2 views
1

Ich versuche, auf Werte von einem eingebetteten Slice in einer Struktur zuzugreifen. Wie kann ich dies über die Indexierung tun, ohne das private eingebettete Objekt explizit aufzurufen (was bei Zugriffen von außerhalb des Pakets nicht einmal möglich ist), wenn das überhaupt möglich ist?Auf Werte von eingebettetem Slice in Struktur zugreifen

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

Auch bezogen werden: [Go: eine primitive Art Einbettung] (http://stackoverflow.com/questions/38811253/go-embedding-a-primitive-type) – icza

Antwort

1

Ich denke, ich die Antwort in diesem Beitrag nicht gefunden: golang anonymous field of type map

nur Felder und Methoden können „gefördert“, wenn Sie einbetten. Für alles andere sind sie nur ein weiteres Feld.

In diesem Fall würde die Struktur das Äquivalent sein:

type A struct { 
    aSlice aSlice 
} 

was Sinn macht, warum die Werte über A.aSlice Indizierung nur zugänglich sind.

1

Wenn Sie das Segment als exportierten Typ deklarieren, können Sie auf das eingebettete Segment zugreifen. Aber Sie können immer noch nicht indexieren.

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]) 
} 
Verwandte Themen