2013-06-05 3 views

Antwort

16

Die Go-Spezifikation sagt:

Eine neue, leere Karte Wert gemacht wird, um die integrierte Funktion unter Verwendung der, der den Kartentyp und eine optionale Kapazität Hinweis als Argumente nimmt:

make(map[string]int) 
make(map[string]int, 100) 

die Anfangskapazität ist seine Größe nicht gebunden: Karten wachsen die Anzahl der Elemente in ihnen

Also, nein, Sie müssen alle eine nicht machen gespeichert aufnehmen llocations zu einer Karte, sobald Sie sie erstellt haben. Dies wird intern von der Go-Laufzeit gehandhabt. Die optionale Kapazität, die beim Erstellen der Karte verwendet wird, ist nur ein Hinweis, keine Einschränkung.

+0

oh ich habe festgestellt, dass meine map noch nicht "make" ist, verursachte also einen fehler. Kein Problem mit dem Platzproblem. aber wie rufe ich make, wenn die container struct erstellt wird? Ich sehe Konstruktor in go lang nicht. – Nick

+3

Wahr, es gibt keine Konstruktoren in Go. Anstelle von Konstruktoren können Sie eine Factory-Funktion mit demselben Namen wie der Typ verwenden, nur mit vorangestelltem 'New'. Z.B. 'func NewStruct ([Argumente]) * Struct'. Es ist idiomatisch, dies zu tun. – ANisus

Verwandte Themen