




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
結(jié)構(gòu)體結(jié)構(gòu)體定義初始化結(jié)構(gòu)體變量實例化結(jié)構(gòu)體01.03.02.目錄匿名結(jié)構(gòu)體04.01結(jié)構(gòu)體定義結(jié)構(gòu)體定義結(jié)構(gòu)體語法格式1結(jié)構(gòu)體定義結(jié)構(gòu)體的定義Go語言中沒有“類”的概念,通過struct來實現(xiàn)面向?qū)ο笸ǔS糜诒磉_(dá)一個事物的全部或部分屬性是一種自定義數(shù)據(jù)類型,可以封裝多個基本數(shù)據(jù)類型本質(zhì)是將零個或者多個任意類型的命名變量組合在一起的聚合數(shù)據(jù)類型每個變量叫做結(jié)構(gòu)體的成員,變量名必須唯一,可用“_”補(bǔ)位支持使用自身指針類型成員type類型名struct{
字段名字段類型字段名字段類型
......}結(jié)構(gòu)體語法格式類型名:標(biāo)識自定義結(jié)構(gòu)體的名稱,在同一個包內(nèi)不能重復(fù)。字段名:表示結(jié)構(gòu)體字段名,結(jié)構(gòu)體中的字段名必須唯一。字段類型:表示結(jié)構(gòu)體字段的具體類型。typeStudentstruct{stuIDintstuNamestringageint}//成員變量通常一行寫一個,變量的名稱在類型的前面結(jié)構(gòu)體案列typeStudentstruct{stuID,ageintstuNamestring}//相同類型的連續(xù)成員變量可以寫在一行上。結(jié)構(gòu)體案列1結(jié)構(gòu)體定義typeStudent1struct{stuId,ageintstuName,addressstringclass,teacherstring}typeStudent2struct{stuIdintaddress,stuNamestringageintclass,teacherstring}成員變量的順序?qū)τ诮Y(jié)構(gòu)體同一性很重要相同類型的不連續(xù)成員變量不可以寫在一行上1結(jié)構(gòu)體定義02實例化結(jié)構(gòu)體結(jié)構(gòu)體的使用結(jié)構(gòu)體實例化語法new關(guān)鍵字2實例化結(jié)構(gòu)體結(jié)構(gòu)體的使用結(jié)構(gòu)體屬于數(shù)據(jù)類型,因此和聲明Go語言內(nèi)置數(shù)據(jù)類型一樣使用var關(guān)鍵字聲明結(jié)構(gòu)體類型只有當(dāng)結(jié)構(gòu)體實例化時,才會真正地分配內(nèi)存即必須實例化后才能使用結(jié)構(gòu)體的字段packagemainimport"fmt"funcmain(){typepersonstruct{namestringcitystringageint8}varp1person //實例化結(jié)構(gòu)體}實例化語法var結(jié)構(gòu)體實例結(jié)構(gòu)體類型packagemainimport"fmt"funcmain(){varp1struct{namestring;citystring;ageint}}在定義一些臨時數(shù)據(jù)結(jié)構(gòu)等場景下還可以使用匿名結(jié)構(gòu)體2實例化結(jié)構(gòu)體packagemainimport"fmt"funcmain(){typepersonstruct{namestringcitystringageint8}varp1=new(person)}2實例化結(jié)構(gòu)體new關(guān)鍵字實例化語法結(jié)構(gòu)體實例:=new(結(jié)構(gòu)體類型)使用new實例化結(jié)構(gòu)體后,得到的是結(jié)構(gòu)體的地址;結(jié)構(gòu)體類型為指針類型通過&符號對結(jié)構(gòu)體取地址取地址的同時會將結(jié)構(gòu)體實例化03初始化結(jié)構(gòu)體變量順序初始化指定初始化結(jié)構(gòu)體普通變量結(jié)構(gòu)體指針變量3初始化結(jié)構(gòu)體變量結(jié)構(gòu)體初始化結(jié)構(gòu)體類型的值可以通過結(jié)構(gòu)體字面量來設(shè)置,即通過結(jié)構(gòu)體的成員變量來設(shè)置有兩種格式的結(jié)構(gòu)體字面量:順序初始化、指定成員初始化要求順序為每個成員變量指定一個值,這種格式必須記住每個成員變量的順序結(jié)構(gòu)體順序初始化通過指定部分或者全部成員變量的名稱和值來初始化結(jié)構(gòu)體變量,如果成員被忽略的話將默認(rèn)用零值結(jié)構(gòu)體指定成員初始化結(jié)構(gòu)體初始化的幾種情況結(jié)構(gòu)體定義時,結(jié)構(gòu)體中的值會根據(jù)字段類型被賦予一個默認(rèn)值使用鍵值對對結(jié)構(gòu)體進(jìn)行初始化時,鍵對應(yīng)結(jié)構(gòu)體的字段,值對應(yīng)該字段的初始值初始化結(jié)構(gòu)體的時候可以簡寫,也就是初始化的時候不寫鍵,直接寫值3初始化結(jié)構(gòu)體變量3初始化結(jié)構(gòu)體變量packagemainimport( "fmt")funcmain(){typepersonstruct{namestringcitystringageint8}
//順序初始化,每個成員必須初始化
varp1person="Go語言"p1.city="深圳"p1.age=18fmt.Println(p1)//指定成員初始化,沒有初始化的成員自動賦值為零
p2:=person{name:"Golang"}fmt.Println(p2)}運(yùn)行結(jié)果為:{Go語言深圳18}{Golang0}3初始化結(jié)構(gòu)體變量packagemainimport( "fmt")funcmain(){typepersonstruct{namestringcitystringageint8}
//順序初始化,每個成員必須初始化
varp1*person=&person{"Go語言","深圳",18}fmt.Println(*p1)//指定成員初始化,沒有初始化的成員自動賦值為零
p2:=&person{name:"Golang"}fmt.Println(*p2)}運(yùn)行結(jié)果為:{Go語言深圳18}{Golang0}3初始化結(jié)構(gòu)體變量結(jié)構(gòu)體成員變量的使用結(jié)構(gòu)體普通變量定義結(jié)構(gòu)體普通變量使用(.)運(yùn)算符操作成員結(jié)構(gòu)體指針變量先定義一個普通結(jié)構(gòu)體變量s,再定義一個指針變量p1存放s的地址,通過指針操作成員:p1.Name或(*p1).Name通過new()實例化一個結(jié)構(gòu)體p2,通過指針操作成員:(*p2).Name或p2.Name3初始化結(jié)構(gòu)體變量packagemainimport"fmt"funcmain(){typepersonstruct{namestringcitystringageint8}varppersonvarp1*personp1=&p="Go語言"p1.city="深圳"(*p1).age=18fmt.Println(*p1)p2:=new(person)="Golang"p2.city="廣東"(*p2).age=20fmt.Println(*p2)}運(yùn)行結(jié)果為:{Go語言深圳18}{Golang廣東20}04匿名結(jié)構(gòu)體匿名結(jié)構(gòu)體定義匿名結(jié)構(gòu)體語法格式4匿名結(jié)構(gòu)體匿名結(jié)構(gòu)體的定義匿名結(jié)構(gòu)體,顧名思義,即沒有名字的結(jié)構(gòu)體,與匿名函數(shù)類似匿名結(jié)構(gòu)體無須type關(guān)鍵字就可以直接使用,匿名結(jié)構(gòu)體在創(chuàng)建的同時也要創(chuàng)建對象匿名結(jié)構(gòu)體的初始化和使用更加簡單,無須通過type關(guān)鍵字定義,且不用寫出類型名稱結(jié)構(gòu)體實例:=struct{ //匿名結(jié)構(gòu)體定義
成員變量1類型1
成員變量2類型2 ...}{ //成員變量初始化(可選)
成員變量1:值1,
成員變量2:值2, …}結(jié)構(gòu)體語法格式4匿名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量管理部2025年度客戶關(guān)系管理計劃
- 軟件開發(fā)科技企業(yè)簡介范文
- 學(xué)校體育活動安全保障計劃
- (部編教材)五年級語文上冊第三單元興趣培養(yǎng)計劃
- 醫(yī)療糾紛調(diào)解組織制度及流程規(guī)范
- 新入職教師職業(yè)行為準(zhǔn)則心得體會
- 小學(xué)四年級班主任班級志愿者培養(yǎng)計劃
- 一年級課外閱讀家長參與計劃
- 三年級下冊科學(xué)課程提升計劃
- 人教版六年級語文暑假復(fù)習(xí)計劃
- 手術(shù)室??瓶荚囶}庫與答案
- 預(yù)制構(gòu)件制造采購合同
- 【培訓(xùn)課件】情緒管理
- EPS模塑聚苯板施工方案
- 2024至2030年中國娛樂玩具行業(yè)投資前景及策略咨詢研究報告
- T-TSSP 036-2023 鮮核桃仁團(tuán)體標(biāo)準(zhǔn)
- 馬拉松志愿者培訓(xùn)方案
- 建筑工程崗前實踐報告1500字
- 掛靠、被掛靠核算表格
- 天津市部分區(qū)2023-2024學(xué)年高一學(xué)期期末生物試卷
- 人教版五年級英語下冊期末試卷及答案
評論
0/150
提交評論