So I'm looking at this article on Structure Embedding in GoLang.
When reading, I came upon this: "Note that the access co.b
is a syntactic convenience; we can also do it more explicitly with co.Base.b
.".
So if that's just a "syntactic convenience", is structure embedding equal to just adding a field?
E.g.
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);
}
Putting:
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();
}
into SoloLearn's Go playground that seems to be the case.
So is there any difference, or am I right about them being the exact same thing?