c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套
生活随笔
收集整理的這篇文章主要介紹了
c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
每次學習并整理一個Golang的知識點,每天進步一點點。今天學習一個go結構體嵌套的知識點。
日省吾身
1.下面這段代碼的輸出結果?
func main() { a := -7 b := +7 fmt.Printf("%+d %+d", a, b)}- A. -7 +7
- B. +7 +7
- C. 7 7
- D. +7 -7
2.判斷下面代碼是否能正常執行?如果可以,寫出輸出結果?
type People struct{}func (p *People) ShowA() { fmt.Println("showA") p.ShowB()}func (p *People) ShowB() { fmt.Println("showB")}type Teacher struct { People}func (t *Teacher) ShowB() { fmt.Println("teacher showB")}func main() { t := Teacher{} t.ShowB() t.ShowA()}要有自己的思考哦
思考后看下方答案…
答疑解惑
參考答案:
1. A %+d 表示帶符號的整型
%d表示輸出十進制數字,+表示輸出數值的符號; fmt.Printf("%+d", 255)結果輸出為:+255
2. 輸出結果見下: 知識點:結構體嵌套
teacher showBshowAshowB- 結構體Teacher中又嵌套了另外一個結構體:People;在嵌套結構體中,People 稱為內部類型,Teacher 稱為外部類型;通過嵌套,內部類型的屬性、方法,可以為外部類型所有,就好像是外部類型自己的一樣。此外,外部類型還可以定義自己的屬性和方法,當外部類型方法名與內部類型相同時,內部類型的方法就會被“屏蔽”,優先使用外部類型自己的方法。這個例子中的 ShowB() 就是同名方法,所以調用了Teacher的ShowB()方法,輸出"teacher showB”;
- t.ShowA(),由于Teacher 沒有自己的 ShowA()方法,所以調用內部類型 People 的同名方法,而People的ShowA()方法中又調用了自己的ShowB()方法,所以t.ShowA()的輸出結果為:showA showB;
以上,你做對了嗎?
其他相關答案或補充知識點,歡迎在評論區留言補充!
擴展閱讀
匿名字段
結構體中的字段可以不給名稱,這時稱為匿名字段。匿名字段的名稱強制和類型相同。例如:
type person struct {name stringage int}type teacher struct {personintschool string}上面teacher中有兩個匿名字段person和int,匿名字段的名稱和類型相同,等價于:
type teacher struct {person personint intschool string}跟題2類似,teacher中嵌套了其他結構體(person)。其中teacher就稱為外部struct,person就稱為內部struct;
下期提問
答案及解析將在下期文章中給出,歡迎大家在評論區留言,獨樂樂不如眾樂樂,交流學習,互相進步。
歡迎轉發和評論。更多優質原創文章,歡迎關注微信公眾號“IYue愛月”。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的c++结构体嵌套结构体_Go学习每日一问(13)-结构体嵌套的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python优雅编程_Python优雅地
- 下一篇: leetcode 贪心_利用贪心算法解L