Etkili Git ve Git Öğreticilerini ve bazı kaynakları okudum, ancak interface {}
sözdiziminin ardındaki tam mekanizma Go'nun bana biraz gizemli. İlk kez heap.Interface
'u uygulamaya çalışırken gördüm ve bir türden bir kap olarak görünüyor (biraz monadını hatırlatıyor).Go'da "interface {}" sözdiziminin rolü nedir?
Neden bunu kullanmak için yazılır? Jenerikler için bir çeşit çözüm mü? heap.Interface
'dan değerlerin heap.Pop(&h).(*Foo)
(Foo yazmak için bir yığın işaretçisinin olması durumunda) olması gerekenden daha şık bir yol var mı?
Ahh, bu anonim bir tip! Anladım. Teşekkür ederim! Tutulan türün sorgulanması için bir çeşit yansıma kullanacağımı düşünüyorum. O bölümle henüz çalışmadım; Şimdiye kadar değerleri geri almak için sadece (tek, bana) '. ()' sözdizimini kullandım. –
Türü sorgulamanıza izin veren bir yansıtma paketi var veya normal bir anahtara benzeyen bir tip anahtarını kullanabilirsiniz, ancak durumlar türlerdir. Ya da yalnızca türden bir onaylamayan sürümü kullanabilirsiniz (ör. 'Value, ok: = foo. (Type)') –