61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)4.1 結(jié)構(gòu)體_第1頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)4.1 結(jié)構(gòu)體_第2頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)4.1 結(jié)構(gòu)體_第3頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)4.1 結(jié)構(gòu)體_第4頁
61396-Go語言程序設(shè)計(jì)項(xiàng)目化教程(微課版)4.1 結(jié)構(gòu)體_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

結(jié)構(gòu)體結(jié)構(gòu)體定義初始化結(jié)構(gòu)體變量實(shí)例化結(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來實(shí)現(xiàn)面向?qū)ο笸ǔS糜诒磉_(dá)一個(gè)事物的全部或部分屬性是一種自定義數(shù)據(jù)類型,可以封裝多個(gè)基本數(shù)據(jù)類型本質(zhì)是將零個(gè)或者多個(gè)任意類型的命名變量組合在一起的聚合數(shù)據(jù)類型每個(gè)變量叫做結(jié)構(gòu)體的成員,變量名必須唯一,可用“_”補(bǔ)位支持使用自身指針類型成員type類型名struct{

字段名字段類型字段名字段類型

......}結(jié)構(gòu)體語法格式類型名:標(biāo)識(shí)自定義結(jié)構(gòu)體的名稱,在同一個(gè)包內(nèi)不能重復(fù)。字段名:表示結(jié)構(gòu)體字段名,結(jié)構(gòu)體中的字段名必須唯一。字段類型:表示結(jié)構(gòu)體字段的具體類型。typeStudentstruct{stuIDintstuNamestringageint}//成員變量通常一行寫一個(gè),變量的名稱在類型的前面結(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實(shí)例化結(jié)構(gòu)體結(jié)構(gòu)體的使用結(jié)構(gòu)體實(shí)例化語法new關(guān)鍵字2實(shí)例化結(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)體實(shí)例化時(shí),才會(huì)真正地分配內(nèi)存即必須實(shí)例化后才能使用結(jié)構(gòu)體的字段packagemainimport"fmt"funcmain(){typepersonstruct{namestringcitystringageint8}varp1person //實(shí)例化結(jié)構(gòu)體}實(shí)例化語法var結(jié)構(gòu)體實(shí)例結(jié)構(gòu)體類型packagemainimport"fmt"funcmain(){varp1struct{namestring;citystring;ageint}}在定義一些臨時(shí)數(shù)據(jù)結(jié)構(gòu)等場景下還可以使用匿名結(jié)構(gòu)體2實(shí)例化結(jié)構(gòu)體packagemainimport"fmt"funcmain(){typepersonstruct{namestringcitystringageint8}varp1=new(person)}2實(shí)例化結(jié)構(gòu)體new關(guān)鍵字實(shí)例化語法結(jié)構(gòu)體實(shí)例:=new(結(jié)構(gòu)體類型)使用new實(shí)例化結(jié)構(gòu)體后,得到的是結(jié)構(gòu)體的地址;結(jié)構(gòu)體類型為指針類型通過&符號(hào)對結(jié)構(gòu)體取地址取地址的同時(shí)會(huì)將結(jié)構(gòu)體實(shí)例化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)體字面量:順序初始化、指定成員初始化要求順序?yàn)槊總€(gè)成員變量指定一個(gè)值,這種格式必須記住每個(gè)成員變量的順序結(jié)構(gòu)體順序初始化通過指定部分或者全部成員變量的名稱和值來初始化結(jié)構(gòu)體變量,如果成員被忽略的話將默認(rèn)用零值結(jié)構(gòu)體指定成員初始化結(jié)構(gòu)體初始化的幾種情況結(jié)構(gòu)體定義時(shí),結(jié)構(gòu)體中的值會(huì)根據(jù)字段類型被賦予一個(gè)默認(rèn)值使用鍵值對對結(jié)構(gòu)體進(jìn)行初始化時(shí),鍵對應(yīng)結(jié)構(gòu)體的字段,值對應(yīng)該字段的初始值初始化結(jié)構(gòu)體的時(shí)候可以簡寫,也就是初始化的時(shí)候不寫鍵,直接寫值3初始化結(jié)構(gòu)體變量3初始化結(jié)構(gòu)體變量packagemainimport( "fmt")funcmain(){typepersonstruct{namestringcitystringageint8}

//順序初始化,每個(gè)成員必須初始化

varp1person="Go語言"p1.city="深圳"p1.age=18fmt.Println(p1)//指定成員初始化,沒有初始化的成員自動(dòng)賦值為零

p2:=person{name:"Golang"}fmt.Println(p2)}運(yùn)行結(jié)果為:{Go語言深圳18}{Golang0}3初始化結(jié)構(gòu)體變量packagemainimport( "fmt")funcmain(){typepersonstruct{namestringcitystringageint8}

//順序初始化,每個(gè)成員必須初始化

varp1*person=&person{"Go語言","深圳",18}fmt.Println(*p1)//指定成員初始化,沒有初始化的成員自動(dòng)賦值為零

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)體指針變量先定義一個(gè)普通結(jié)構(gòu)體變量s,再定義一個(gè)指針變量p1存放s的地址,通過指針操作成員:p1.Name或(*p1).Name通過new()實(shí)例化一個(gè)結(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)建的同時(shí)也要?jiǎng)?chuàng)建對象匿名結(jié)構(gòu)體的初始化和使用更加簡單,無須通過type關(guān)鍵字定義,且不用寫出類型名稱結(jié)構(gòu)體實(shí)例:=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)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論