精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go語言基礎之結構體(秋日篇)

開發 后端
本篇我們學習Go基礎之結構體的匿名字段結構體,結構體嵌套,匿名結構體嵌套,匿名嵌套結構體字段沖突。

[[354630]]

 前言

Hey,大家好呀,碼農我是星期八,咱們接著上次繼續說,看一下結構體還有什么其他操作。沒來得及上車的小伙伴請戳:Go語言基礎之結構體(春日篇)、Go語言基礎之結構體(夏日篇)。

匿名字段結構體

如果以后再遇到匿名這個詞,就把他當作沒有名字的意思。

匿名加字段結構體代碼。

  1. package main 
  2.  
  3. import "fmt" 
  4.  
  5. type Student struct { 
  6.     string 
  7.     int 
  8.     //string //error:duplicate field string 
  9.     //int    //error:duplicate field string 
  10.  
  11. func main() { 
  12.     var s1 = Student{ 
  13.         "666", 
  14.         0, 
  15.     fmt.Println(s1) 

第8行和第9行代碼,如果去掉注釋會報錯。

這就說明了個問題,如果是匿名字段結構體,匿名字段類型是不能重復的,如上述代碼所示。

結構體嵌套

結構體嵌套,就如名字一樣,一個結構體,嵌套了另外一個結構體。

假設

一個學生的信息,假設有姓名,年齡,性別,這三個字段。

這個學生必定要歸屬一個班級的,假設這個班級的信息有年級,幾班,班主任姓名。

創建結構體

根據上述敘述,我們知道一定是有兩個結構體的,至少一個是學生,一個是班級。

班級結構體

  1. type Classes struct { 
  2.     Grade       int    //年級 
  3.     Class       int    //班級 
  4.     TeacherName string //班主任姓名 

學生結構體

  1. type Student struct { 
  2.     Name   string  //姓名 
  3.     Age    int     //年齡 
  4.     Gender string  //性別 
  5.     class  Classes //所屬班級 

可以看到第5行代碼,結構體的字段類型直接是一個結構體,這就是結構體嵌套、

當一個結構體不能完整描述一個對象時,或者說本來就是獨立的對象有關聯時,就需要結構體嵌套。

嵌套結構體賦值

方式一,直接賦值嵌套結構體

  1. func main() { 
  2.     var s1 = Student{ 
  3.         Name:   "張三", 
  4.         Age:    18, 
  5.         Gender: "男", 
  6.         class: Classes{ 
  7.             Grade:       2020, 
  8.             Class:       1, 
  9.             TeacherName: "張三的老師", 
  10.         }, 
  11.     fmt.Println(s1) 

方式二,分開賦值

  1. func main() { 
  2.     var c1 = Classes{ 
  3.         Grade:       2020, 
  4.         Class:       1, 
  5.         TeacherName: "張三的老師", 
  6.     var s2 = Student{ 
  7.         Name:   "張三", 
  8.         Age:    18, 
  9.         Gender: "男", 
  10.         class:  c1, 
  11.     fmt.Println(s2) 

兩次執行結果


其實方式一和方式二的本質是一樣的,只不過是方式二將嵌套的結構體單獨賦值了而已。

匿名嵌套字段

上述我們的Student結構體是這樣寫的。

  1. type Student struct { 
  2.     Name   string  //姓名 
  3.     Age    int     //年齡 
  4.     Gender string  //性別 
  5.     class  Classes //所屬班級 

但是其實第5行代碼的字段是可以省略的,就像這樣。

  1. type Student struct { 
  2.     Name   string  //姓名 
  3.     Age    int     //年齡 
  4.     Gender string  //性別 
  5.     Classes //所屬班級 

但是在賦值時,就要注意了,因為Student結構體已經沒有字段名了,所以就不能使用上述的方式賦值了

需要這種。

  1. func main() { 
  2.     var s1 = Student{ 
  3.         Name:   "張三", 
  4.         Age:    18, 
  5.         Gender: "男", 
  6.         Classes: Classes{ 
  7.             Grade:       2020, 
  8.             Class:       1, 
  9.             TeacherName: "張三的老師", 
  10.     }, 
  11.   } 

沒錯,第5行的字段名是Classes結構體名。

執行結果還是一樣的。

 

補充

上述是直接通過定義變量時就直接賦值了。

其實不管是結構體,還是嵌套結構體,都還有一種方法,就是通過.的方式賦值,代碼如下。

結構體嵌套

默認的結構體嵌套,結構體還是有字段名的。

  1. type Student struct { 
  2.   Name    string //姓名 
  3.   Age     int    //年齡 
  4.   Gender  string //性別 
  5.   class Classes        //所屬班級 

所以賦值代碼如下。

  1. func main() { 
  2.   var s1 Student 
  3.   s1.Name = "張三" 
  4.   s1.Age = 18 
  5.   s1.Gender = "男" 
  6.   s1.class.Grade = 2020 
  7.   s1.class.Class = 1 
  8.   s1.class.TeacherName = "張三的老師" 
  9.   fmt.Println(s1) 

第6行代碼開始,通過s1找到class這個字段,再根據class找到class具體對應的值進行賦值。

匿名嵌套字段

匿名嵌套字段是沒有字段名的,是有一個字段類型。

  1. type Student struct { 
  2.   Name    string //姓名 
  3.   Age     int    //年齡 
  4.   Gender  string //性別 
  5.   Classes        //所屬班級 

所以賦值跟上述也不太一樣,是這樣的。

  1. func main() { 
  2.   var s1 Student 
  3.   s1.Name = "張三" 
  4.   s1.Age = 18 
  5.   s1.Gender = "男" 
  6.   s1.Classes.Grade = 2020 
  7.   s1.Classes.Class = 1 
  8.   s1.Classes.TeacherName = "張三的老師" 
  9.   fmt.Println(s1) 

通過s1直接找到Classes這個結構體,再根據這個結構體找到里面具體的值,進行賦值。

其實跟定義變量時賦值相似。

但是終究執行結果,還是一樣的,只是賦值形式不同。

結論

根據嵌套結構體和匿名嵌套結構體再賦值時可以發現。

如果嵌套結構體有字段名,通過字段名找具體的字段,進行賦值。

如果是嵌套結構體匿名字段,通過嵌套結構體的名字,找具體字段,進行賦值。

嵌套結構體字段沖突

這個沖突的問題,其實還是比較少見的,這個問題通常情況下,只會出現在匿名嵌套場景中。

還是上述的結構體,但是賦值可以是這樣操作的。

  1. func main() { 
  2.   var s1 Student 
  3.   s1.Name = "張三" 
  4.   s1.Age = 18 
  5.   s1.Gender = "男" 
  6.   s1.Classes.Grade = 2020 
  7.   s1.Classes.Class = 1 
  8.   s1.Classes.TeacherName = "張三的老師" 
  9.   //######### 分割 ########## 
  10.   s1.Grade = 2020    //省去了Classes 
  11.   s1.Class = 1    //省去了Classes 
  12.   s1.TeacherName = "張三的老師"  //省去了Classes 
  13.   fmt.Println(s1) 

第10行,直接通過s1.Grade賦值,其實是省去了一個Classes,但是這種操作,只有在匿名嵌套結構體中可以使用。

但是如果我將結構體改成這樣子。

  1. //班級 
  2. type Classes struct { 
  3.   Grade       int    //年級 
  4.   Class       int    //班級 
  5.   TeacherName string //班主任姓名 
  6.  
  7. //課程 
  8. type Course struct { 
  9.   CourseName  string //課程名字 
  10.   TeacherName string //任課老師姓名 
  11.  
  12. //學生 
  13. type Student struct { 
  14.   Name    string //姓名 
  15.   Age     int    //年齡 
  16.   Gender  string //性別 
  17.   Classes        //所屬班級 
  18.   Course         //任課老師 

Student結構體有兩個匿名嵌套結構體,一個是Classes,一個是Course。

但是有一個字段,是沖突的,就是TeacherName,如果還是通過懶的方式賦值,會發生什么呢?

  1. func main() { 
  2.   var s1 Student 
  3.   s1.Name = "張三" 
  4.   s1.Age = 18 
  5.   s1.Gender = "男" 
  6.   s1.Grade = 2020 
  7.   s1.Class = 1 
  8.   s1.TeacherName = "張三的老師" 
  9.   fmt.Println(s1) 

第8行,直接找TeacherName字段,這時候就會出問題了。

 

意思很簡單,就是不知道是Classes的TeacherName還是Course的TeacherName。

這時候,就必須要指定了。

  1. s1.Classes.TeacherName = "張三的班主任" 
  2. s1.Course.TeacherName = "張三的任課老師" 

總結

個人建議,還是盡量不要使用匿名嵌套結構體。

如果使用了匿名嵌套結構體,盡可能的采用標準方式賦值,不要采用懶得方式。

如果采用了懶的方式,一定要注意有沒有字段沖突。

最后的總結

上述我們學習了Go基礎之結構體的匿名字段結構體,結構體嵌套,匿名結構體嵌套,匿名嵌套結構體字段沖突。

各位小伙伴一定要實踐一下,親手打一下代碼,堅持就是勝利,奧里給!

 

責任編輯:姜華 來源: Go語言進階學習
相關推薦

2020-11-26 06:40:24

Go語言基礎

2020-12-02 08:45:36

Go語言

2020-11-23 08:54:14

Go語言結構體

2020-12-20 09:59:13

Go語言基礎技術

2020-12-02 09:10:22

Go結構數據類型

2023-07-29 15:03:29

2021-04-20 09:00:48

Go 語言結構體type

2020-11-11 10:52:54

Go語言C語言

2020-10-22 08:33:22

Go語言

2020-12-23 08:39:11

Go語言基礎技術

2020-12-16 08:07:28

語言基礎反射

2022-02-16 10:03:06

對象接口代碼

2020-11-05 09:58:16

Go語言Map

2021-06-09 09:06:52

Go語言算法

2021-02-06 18:19:54

TimeGo語言

2021-11-03 10:02:07

Go基礎函數

2020-12-07 05:59:02

語言Go接口

2021-01-13 08:40:04

Go語言文件操作

2021-10-30 10:43:04

語言Go函數

2022-04-27 10:01:43

切片Go封裝
點贊
收藏

51CTO技術棧公眾號

国产精品三区四区| 久久久免费观看视频| 久久国产激情视频| а√天堂在线官网| 9l国产精品久久久久麻豆| 国产精品电影一区| 久久久久亚洲av成人片| 国产精品一区二区av交换| 在线电影院国产精品| 玩弄中年熟妇正在播放| 高清日韩av电影| 成人一区二区三区视频在线观看 | 国产酒店精品激情| 欧美最猛性xxxxx亚洲精品| 北条麻妃在线观看视频| 亚洲精品3区| 日韩一区二区麻豆国产| 免费激情视频在线观看| 91福利区在线观看| 亚洲欧美日韩国产综合在线 | 亚洲精品乱码久久久久久9色| a一区二区三区| 一区二区三区高清| 一区二区三区四区在线视频| 嫩草研究院在线观看| 国产精品一区二区久久不卡| 国产精品对白刺激| 国产精品男女视频| 亚洲成人直播| 欧美福利在线观看| 97成人资源站| 日韩欧美精品综合| 亚洲欧美一区二区三区情侣bbw| 色婷婷狠狠18禁久久| 日韩有码欧美| 欧美视频日韩视频在线观看| 99福利在线观看| а√在线中文在线新版 | 天天操中文字幕| 激情欧美日韩一区| 欧美高清视频在线观看| 日本精品在线免费观看| 欧美在线观看视频一区| 亚洲性视频网址| 亚洲区免费视频| 婷婷亚洲成人| 亚洲免费av电影| 97人妻天天摸天天爽天天| 国产人妖ts一区二区| 精品久久人人做人人爽| 日本久久久久久久久久| 99re8这里有精品热视频免费| 日韩免费视频线观看| 无套白嫩进入乌克兰美女| 日本精品在线播放 | 国产精品video| 免费一级a毛片| 青青青爽久久午夜综合久久午夜| 国产精品wwwwww| 在线视频播放大全| 精品亚洲欧美一区| 91在线短视频| 人人妻人人玩人人澡人人爽| 99视频精品全部免费在线| 国产一区二区三区免费不卡| 亚州男人的天堂| 久久精品在线免费观看| 一本久久a久久精品vr综合 | www.色亚洲| 成人性生交大片免费| 国内成+人亚洲| 嫩草在线播放| 最新久久zyz资源站| 九一免费在线观看| 久草在线资源站手机版| 日本电影亚洲天堂一区| 污污的视频免费| 97久久亚洲| 亚洲欧美日韩爽爽影院| 亚洲女同二女同志奶水| 午夜天堂精品久久久久| 91av在线看| 伊人久久成人网| 国产高清视频一区| 欧美成人dvd在线视频| 在线观看黄色av| 亚洲一区二区三区三| 亚洲精品无码久久久久久| 欧美综合社区国产| 精品sm捆绑视频| 微拍福利一区二区| 欧美欧美天天天天操| 国产69精品久久久久久| 中文字幕一区二区三区免费看| 国产一区二区三区日韩| 久久国产一区二区| 黄色片网站在线| 精品欧美国产一区二区三区| 日韩爱爱小视频| 老司机成人在线| x99av成人免费| 亚洲天堂av片| 福利电影一区二区| 夜夜爽www精品| 亚洲精品mv| 日韩美女天天操| 性爱在线免费视频| 国产一区二区三区的电影 | av地址在线观看| 日韩理论电影| 秋霞成人午夜鲁丝一区二区三区| 国产强伦人妻毛片| 国产欧美日韩久久| 男人日女人下面视频| 国产精品国产亚洲精品| 亚洲午夜小视频| 国产精品黄色网| 国产精品资源在线| 亚洲精品在线免费| 经典三级一区二区| 亚洲精品国偷自产在线99热| 日韩激情综合网| 麻豆久久一区二区| 日韩av大全| 日韩久久一区二区三区| 亚洲精品久久久久中文字幕二区| 欧美精品xxxxx| 国产呦萝稀缺另类资源| 亚洲精品国产一区| 日韩美女在线看免费观看| 亚洲国产毛片完整版| 五月天婷婷网站| 国产福利精品导航| 国产欧美自拍视频| 亚洲欧美专区| xxxxxxxxx欧美| 国产精品探花视频| 一区精品在线播放| 色18美女社区| 亚洲国产一区二区三区在线播放| 成人福利视频网| 免费黄网在线观看| 9191久久久久久久久久久| 精品国产aaa| 蜜乳av一区二区| 亚洲人成人77777线观看| 先锋欧美三级| 少妇激情综合网| 99国产精品99| 亚洲国产一区视频| 亚洲精品乱码久久久久久久| 在线午夜精品| 人偷久久久久久久偷女厕| 成人免费影院| 尤物99国产成人精品视频| 亚洲国产无线乱码在线观看| 国产精品日韩精品欧美在线| 亚欧美在线观看| 中出一区二区| 国产精品污www一区二区三区| 2019中文字幕在线电影免费| 日韩av最新在线| 91黑人精品一区二区三区| 中文字幕欧美日本乱码一线二线| 亚洲一级片免费| 亚洲精彩视频| 国产乱人伦精品一区二区| 九色porny丨首页入口在线| 亚洲老板91色精品久久| 中文字幕一区二区三区四区视频 | 欧美成年人网站| 黄频网站在线观看| 色视频一区二区| 萌白酱视频在线| 懂色一区二区三区免费观看| 男人天堂999| 99热国内精品| 国产欧美日韩视频一区二区三区| а√天堂中文资源在线bt| 亚洲天堂av女优| 国产视频一二三四区| 亚洲成人手机在线| 国产极品视频在线观看| 国产成人精品免费看| 成人免费在线小视频| 色男人天堂综合再现| 国产伦精品一区二区三区高清版| 国产成人精品123区免费视频| xxx一区二区| 日韩精品系列| 日韩一区二区三区三四区视频在线观看| 国产无遮挡aaa片爽爽| 中文字幕成人网| 在线播放av网址| 青青青伊人色综合久久| 日韩a∨精品日韩在线观看| 青青草国产成人a∨下载安卓| 成人欧美一区二区三区在线观看 | 午夜亚洲福利在线老司机| 亚洲一卡二卡三卡四卡无卡网站在线看 | 亚州av综合色区无码一区| 美女网站视频久久| 欧美色图另类小说| 中文字幕一区二区av| 欧美日本韩国一区二区三区| 综合久久成人| 成人a免费视频| 粉嫩一区二区三区| 久久久久久久影院| 怡红院av在线| 久久久精品久久久久| 黄色大片在线免费观看| 亚洲福利在线看| 国产成人三级在线播放| 精品视频在线看| 国产午夜无码视频在线观看| 午夜久久电影网| 青娱乐国产盛宴| 综合久久久久综合| 东方伊人免费在线观看| 91麻豆蜜桃一区二区三区| 国产一精品一aⅴ一免费| 国产在线视频不卡二| 色综合色综合色综合色综合| 久久婷婷激情| 日本三级免费观看| 中文精品视频| 成年人午夜免费视频| 欧美久久九九| 免费观看亚洲视频| 你懂的国产精品| 国产91av视频在线观看| 日产精品一区二区| 少妇免费毛片久久久久久久久| 一区二区美女| 免费一区二区三区在在线视频| 国产欧美三级电影| 国产欧美在线一区二区| 盗摄牛牛av影视一区二区| 成人免费视频网站| 999精品视频在这里| 国产99午夜精品一区二区三区| 1204国产成人精品视频| 俄罗斯精品一区二区三区| 第一区第二区在线| 精品一区久久久| 精品一区亚洲| 亚洲国产精品一区二区第四页av| 精品国产99| 一区二区三区欧美在线| 欧美大人香蕉在线| 女女同性女同一区二区三区按摩| 91精品国产成人观看| 日韩中文在线字幕| 韩日成人av| 18岁网站在线观看| 日韩av成人高清| 久久久久xxxx| 成人免费av在线| 国产激情在线免费观看| 国产精品欧美久久久久一区二区| 999精品视频在线观看播放| 亚洲精品久久嫩草网站秘色| 久久这里只有精品国产| 狠狠色狠狠色综合日日小说| 无码一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 国产精品视频一二区| 欧美www视频| 欧美色视频免费| 色噜噜狠狠色综合网图区| 99热国产在线| 欧美一区第一页| 色999久久久精品人人澡69| 91免费版黄色| 蜜桃成人av| 樱空桃在线播放| 国产一级久久| 亚洲欧美天堂在线| 99久久伊人久久99| 日本一二三不卡视频| 亚洲乱码国产乱码精品精98午夜| 日本一区二区免费在线观看| 欧美午夜精品久久久久久超碰| 国产女人18毛片水18精| 亚洲精品国产美女| 久久bbxx| 38少妇精品导航| 国产精品18| 欧美一区二区在线| 欧美日韩国产高清| 男女污污的视频| 国产99久久久国产精品潘金| 亚洲一区二区自偷自拍 | 毛片一区二区三区四区| 国内精品国产成人| 自拍偷拍中文字幕| 亚洲最新在线观看| 中文字幕第315页| 亚洲国产欧美一区二区三区同亚洲 | 在线免费观看亚洲| 精品产品国产在线不卡| 久久精品亚洲人成影院| 99蜜桃臀久久久欧美精品网站| 国产精品一区二区在线看| 亚洲精品午夜视频| 五月婷婷色综合| 99在线观看免费| 色播久久人人爽人人爽人人片视av| 91超碰在线播放| 91沈先生播放一区二区| 成人3d动漫在线观看| 9久久9毛片又大又硬又粗| 国产精品白丝jk黑袜喷水| 自拍偷拍你懂的| 在线亚洲精品福利网址导航| 三级小视频在线观看| 麻豆成人在线看| 四虎永久精品在线| 亚洲成人午夜在线| 免费在线观看成人av| 中国一级特黄录像播放| 亚洲愉拍自拍另类高清精品| 91午夜交换视频| 色悠悠久久88| 巨胸喷奶水www久久久免费动漫| 久久精品中文字幕一区二区三区 | 亚洲色图88| 日韩av一卡二卡三卡| 中文字幕精品一区二区精品绿巨人| 精品国产免费观看| 亚洲精品国产精品久久清纯直播 | www日本在线观看| 亚洲欧美电影院| 国产伦精品一区二区三区视频痴汉 | 欧美性少妇18aaaa视频| 色综合久久久久久| 午夜精品福利电影| 日韩欧美四区| 99re在线视频免费观看| 久久午夜色播影院免费高清| 天堂在线免费观看视频| 精品一区二区亚洲| 国产精品伦理| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 久久久噜噜噜久噜久久综合| 精品国产免费观看| 亚洲男人的天堂网站| 日韩久久一区二区三区| 亚洲精品国产精品国自产| 精品一区二区三区免费观看| 懂色av蜜臀av粉嫩av永久| 欧美精品一级二级三级| 在线午夜影院| 国产精选在线观看91| 国产欧美成人| 中文字幕人妻一区二区三区在线视频| 欧美视频在线一区二区三区 | 性色av一区二区三区在线观看 | 亚洲乱码一区二区三区| 裸体在线国模精品偷拍| 欧美视频www| 精品久久国产字幕高潮| 日本在线影院| 日韩一区二区三区高清| 极品少妇一区二区三区精品视频 | 日本乱码高清不卡字幕| 成年人免费在线视频| 92裸体在线视频网站| 亚洲国产国产亚洲一二三 | 日韩码欧中文字| 国产 欧美 精品| 国产成人免费91av在线| 午夜片欧美伦| 国产福利在线观看视频| 欧美性色黄大片| 色婷婷av在线| 欧美激情一区二区三区在线视频| 九色|91porny| 国产乡下妇女做爰毛片| 国产亚洲欧洲高清| 综合成人在线| 国产九九在线视频| 亚洲一区二区三区四区在线免费观看 | 精国产品一区二区三区a片| 日韩精品极品在线观看播放免费视频| 91精品店在线| cao在线观看| 中文字幕成人av| 污视频网站在线播放| 国产一区私人高清影院| 亚洲欧洲日本mm| 精品伦精品一区二区三区视频密桃| 精品噜噜噜噜久久久久久久久试看 | 最新97超碰在线| 精品国产综合久久| 国产乱码精品一区二区三区五月婷 | 在线成人直播| 国产中年熟女高潮大集合| 日韩一二三四区|