Tags: #go #golang #struct #promoted #field #error
package main
import (
"fmt"
)
type A struct {
enabled bool
}
func (a *A) isEnabled() bool {
fmt.Println("A isEnabled")
return a.enabled
}
type B struct {
A
}
func (b *B) isEnabled() bool {
fmt.Println("B isEnabled")
return b.A.isEnabled()
}
func main() {
/*
a := &A{enabled: true}
b := &B{enabled: false}
fmt.Printf("a: %#v\n", a.isEnabled())
fmt.Printf("b: %#v\n", b.isEnabled())
// cannot use promoted field A.enabled in struct literal of type B
*/
var a A
a.enabled = true
var b B
b.enabled = false
fmt.Printf("a: %#v\n", a.isEnabled())
fmt.Printf("b: %#v\n", b.isEnabled())
/*
A isEnabled
a: true
B isEnabled
A isEnabled
b: false
*/
}