2016-09-14 9 views
0

eine leere Scheibe zu erklären, weiß ich, dass SieGo - initialisieren eine leere Scheibe

var t []string 

über

t := []string{} 

bevorzugen sollte, da es nicht unnötig Speicher zuordnet (https://github.com/golang/go/wiki/CodeReviewComments#declaring-empty-slices). Ist dies immer noch gelten, wenn ich

type example struct { 
    s []string 
} 
e := &example{} 

haben das heißt, es wäre besser sein

verwenden
e.s = []string{} 

oder

var s []string 
e.s = s 
+1

Ihr letztes Beispiel tut nichts, als 'example.s' ist bereits ein Null Stück vom richtigen Typ. Sie müssen in diesem Fall nichts tun. – JimB

+0

Entschuldigung - meine Frage bearbeitet. immer noch wahr? – ryebread

+1

Ich habe verstanden, was Sie meinten, obwohl der Code ungültig war. 'e.s' und' s' sind beide "nil", also machst du nur 'e.s = nil', was nichts tut. 'e.s' ist bereits der richtige Typ, also musst du nichts machen. – JimB

Antwort

2

example.s bereits erklärt, also gibt es nichts, was Sie tun müssen.

e := &example{} 
e.s = append(e.s, "val") 
fmt.Println(e.s) 
Verwandte Themen