go語言之進階篇同名字段


package main
 
import "fmt"
 
type Person struct {
    name string //名字
    sex  byte   //性別, 字符類型
    age  int    //年齡
}
 
type Student struct {
    Person //只有類型,沒有名字,匿名字段,繼承了Person的成員
    id     int
    addr   string
    name   string //和Person同名了
}
 
func main() {
    //聲明(定義一個變量)
    var s Student
 
    //默認規則 (就近原則),如果能在本作用域找到此成員,就操作此成員
    //                  如果沒有找到,找到繼承的字段
    s.name = "mike" //操作的是Student的name,還是Person的name?, 結論爲Student的
    s.sex = 'm'
    s.age = 18
    s.addr = "bj"
 
    //顯式調用
    s.Person.name = "yoyo" //Person的name
 
    fmt.Printf("s = %+v\n", s)
 
}

執行結果

s = {Person:{name:yoyo sex:109 age:18} id:0 addr:bj name:mike}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章