Hiçbir şey aliasing değiliz ve seçiciler nokta gösterimi kullanılarak bir türüne başvurulabilir şeylerin kümesine başvurur. Gömme, obj1
gömülü denir obj2
bir kavram kullanıyorsunuz. obj1Selector
, obj2
türünde selector
adlı tek bir alana sahiptir. Ve diğer ad bu şekilde görünecekti; obj2
için bir diğer ad olarak obj3
bildiren type obj3 obj2
.
Go'nun promosyon mekanizmasını bozuyor mu? Üzgünüm, ama bunun nasıl çalıştığına dair tüm fikrin temelini atmıyor. obj1
obj2
gömer ve bunun da alanlar/yöntemleri 'terfi' olduğunu vardır, 'terfi' obj1Selector
tip obj2
gömmek değildir ve bunun obj2
hiçbir alan/yöntemleri vardır. obj1Selector
bu arabirimi uygulamıyor, obj1Selector.selector
yapar.
Neden gömmek istiyorum? Eh, mirasa biraz eşittir ya da en azından Go geliştirirken benzer bir özellik kümesi sağlar. Belki de bir veri deposunda 10 ortak alanın paylaşıldığı ve sonra hangi tablodan çıktıklarına bağlı 10 alan daha var. Tıpkı C++, C# veya Java gibi tipik OO dillerinde çoğaltmayı azaltmak için miras kullanmayı tercih ediyorum. Benim düşünceme göre bunun için ana kullanım durumudur. Bir çeşit garip bileşim ve miras karışımı. Başkalarının (yani gömdüğünüz nesnelerin) nesnesini oluşturuyorsunuz ama gömülü tipler/alanlar embedörlerin kapsamına terfi ettiğinden, gömülü tipten miras alınan embedor gibi çok işlev görüyor. Umarım burada uğraştığınız şeyle ilgili bir açıklama yaparsınız. Gerçekten cevaplanabilecek bir soru sormadınız, ancak yorumlarınızda bu kadar uzun bir açıklama ya da yorumunuz yok. Örnek kodunuzu yeniden kullanın.
Bunu her kullandığınızda, bir yavru kedi ölür. [Etkin Go] (https://golang.org/doc/effective_go.html) kurallarına uyun ve uygun bir ad verin. Örneğin: 'fonk (o obj2) printTest (...)' – eduncan911
seni soruyorsun ya da "go/türleri" paketine hiç ilişkisini (Kullanmadığınız olan) anlamadım . Burada ne olmasını bekliyorsun? – JimB
Bunu düzeltdim. Lütfen hayvanları incitmeyi bırak. – Charlie