2016-07-03 17 views

cevap

8

Bu, *Doubler türünün PropertyLoadSaver arabirimini karşıladığını belirleyen bir derleme zamanı iddiasıdır.

*Doubler tip arayüz satisify vermezse, o zaman derleme benzer bir hata ile çıkılacak: nasıl çalıştığını

prog.go:21: cannot use (*Doubler)(nil) (type *Doubler) as type PropertyLoadSaver in assignment: 
*Doubler does not implement PropertyLoadSaver (missing Save method) 

burada. var _ PropertyLoadSaver kodu, PropertyLoadSaver türünde adlandırılmamış bir değişken bildirir. (*Doubler)(nil) ifadesi, *Doubler türünde bir değeri değerlendirir. *Doubler, *DoublerPropertyLoadSaver arabirimini uygularsa, yalnızca ProperytLoadSaver türünde bir değişkene atanabilir.

Boş tanımlayıcı _, değişkenin pakette başka bir yere başvurulması gerekmediğinden kullanılır. Aynı sonuç, boş olmayan bir tanımlayıcı ile sağlanabilir:

+0

Spesifikasyonlara ref ekleyebilir misiniz? https://golang.org/ref/spec –

+0

@Theuser spesifikasyonda değil. Bu resmi olmayan bir kongre. – Endophage

+1

@Karrot Kake şimdi nasıl çalıştığını anlıyorum. Bu bir çeşit hile. Boş tanımlayıcılar herhangi bir şekilde kullanılmadığı için sanırım çöp üretmiyor, değil mi? konu dışı: '' (* Doubler) (nil) '' güzel olsa da. Ben de buna aşina değildim. –