Apakah ada perbedaan antara struct embedding dan mendefinisikan bidang dengan struct yang ingin Anda sematkan?

Jadi saya melihat artikel ini tentang Penyematan Struktur di GoLang .
Saat membaca, saya menemukan ini: "Perhatikan bahwa akses co.b adalah kenyamanan sintaksis; kita juga dapat melakukannya secara lebih eksplisit dengan co.Base.b ".

Jadi, jika itu hanya "kenyamanan sintaksis", apakah penyematan struktur sama dengan menambahkan bidang?
Misalnya

 type A struct { Msg string ; } func ( this * A ) Print () { fmt . Println ( "A: " + this . Msg ); } type B struct { A ; } func ( this * B ) Print () { fmt . Println ( "B: " + this . Msg ); }

==

 type A struct { Msg string ; } func ( this * A ) Print () { fmt . Println ( "A: " + this . Msg ); } type B struct { A A ; } func ( this * B ) Print () { fmt . Println ( "B: " + this . A . Msg ); }

Puting:

 package main ; import "fmt" ; type A struct { Msg string ; } func ( this * A ) Print () { fmt . Println ( "A: " + this . Msg ); } type B struct { A ; } func ( this * B ) Print () { fmt . Println ( "B: " + this . Msg ); } func main () { var test B = B {}; test . Msg = "Hello!" ; test . A . Print (); test . Print (); }

ke taman bermain SoloLearn's Go yang tampaknya menjadi masalah.

Jadi apakah ada perbedaan, atau apakah saya benar tentang mereka yang persis sama?

May 24, 2021

codeorayo

Ampuh! Ini rahasia mengembangkan aplikasi secara instan, tinggal download dan kembangkan. Gabung sekarang juga! Premium Membership [PRIVATE] https://premium.codeorayo.com

Leave a Reply

Your email address will not be published. Required fields are marked *