2014-02-26 6 views
6

Ich verstehe, dass, wenn T eine Struktur ist, dann ist diese Beträge eine leere Struktur (sensible leere Werte) zur Schaffung ::Was bedeutet neu an einer Schnittstelle angewendet?

t := new(T) 

jedoch mit dem folgenden Code-Schnipsel ::

type Burper interface {burp() int}  

b := new(Burper) 

Was ist erstellt & Was ist die Nützlichkeit der Neuaufnahme einer Schnittstelle?

+0

Es scheint Null zurück zu geben. – fuz

+0

@FUZxxl Nicht in meinem Fall. 'fmt.Println (new (Burper))' gibt eine Adresse aus (wenn neu ein Zeiger zurückgegeben wird). – canadadry

+0

Ja, es gibt einen Zeiger auf Null zurück. – fuz

Antwort

7

Dies erstellt nur einen Zeiger auf einen Burper (was eine Schnittstelle ist). Da es für einen Zeiger auf ein Interface (fast) keine sinnvolle Verwendung gibt, gilt Go, harmlos und nutzlos in der Praxis.

b ist ein Zeiger und zeigt auf den Nullwert von Burper, der Null ist.

Siehe http://play.golang.org/p/r6h8KiA9pa

+0

Und hier ist ein Anwendungsfall für eine Schnittstelle-typisierte Null-Zeiger: https://github.com/codeangsta/inject/blob/master/inject.go#L146 – thwd

Verwandte Themen