版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
復(fù)合數(shù)據(jù)類型數(shù)組map映射切片01.03.02.目錄01數(shù)組數(shù)組定義數(shù)組聲明拷貝數(shù)組數(shù)組元素修改1數(shù)組一個(gè)由固定長(zhǎng)度的特定類型元素組成的序列varvariable_name[size]type數(shù)組定義標(biāo)準(zhǔn)格式聲明數(shù)組vara[3]int //聲明一個(gè)數(shù)組名為a、類型為int、大小為3的數(shù)組a[0]=12 //為第一個(gè)元素填充數(shù)據(jù)a[1]=78 //為第二個(gè)元素填充數(shù)據(jù)a[2]=50 //為第三個(gè)元素填充數(shù)據(jù)a:=[3]int{12,78,50} //定義且聲明數(shù)組內(nèi)容a:=[3]int{12} //可以只填充部分?jǐn)?shù)據(jù)varvariable_name=[size]type{value,……}初始化數(shù)組a:=[...]int{12,78,50} //編譯器自行推斷vara=[3]int{12,78,50} //定義且聲明數(shù)組內(nèi)容varvariable_name=[...]type{value,……}自行推斷數(shù)組大小a:=[3]int{1:78,2:50} //填充指定位置1數(shù)組數(shù)組的每個(gè)元素可以通過(guò)索引下標(biāo)來(lái)訪問(wèn)索引下標(biāo)的范圍從0開(kāi)始到數(shù)據(jù)長(zhǎng)度減1結(jié)束數(shù)組無(wú)法靈活擴(kuò)容:在定義數(shù)組元素?cái)?shù)量后,賦值元素變量個(gè)數(shù)必須要小于或者等于預(yù)設(shè)置的元素?cái)?shù)量type指任意的基本類型,也可以是數(shù)組本身,實(shí)現(xiàn)多維數(shù)組在Go語(yǔ)言中數(shù)組是值類型而不是引用類型這意味著當(dāng)數(shù)組變量被賦值時(shí),將會(huì)獲得原數(shù)組的拷貝,新數(shù)組中元素的改變不會(huì)影響原數(shù)組中元素的值數(shù)組特點(diǎn)packagemainimport"fmt"funcmain(){a:=[...]int{12,78,50}b:=a //將a數(shù)組復(fù)制給b數(shù)組
b[0]=60fmt.Println(a)fmt.Println(b)}1數(shù)組在Go中數(shù)組是值類型而不是引用類型。當(dāng)數(shù)組變量被賦值時(shí):將會(huì)獲得原數(shù)組的拷貝。新數(shù)組中元素的改變不會(huì)影響原數(shù)組中元素的值。運(yùn)行結(jié)果為:[127850][607850]packagemainimport"fmt"funcmain(){ vara[1]string//定義一個(gè)1個(gè)元素的string類型數(shù)組,string默認(rèn)值為空
varb=[2]string{“a”,“b”}//定義一個(gè)2個(gè)元素的string類型數(shù)組
c:=[3]string{"a","b","c"}//定義并初始化一個(gè)3個(gè)空間的string類型數(shù)組
d:=[...]string{"a","b","c","d"}//自動(dòng)推到元素個(gè)數(shù)
e:=d//拷貝數(shù)組
e[0]="e"http://修改數(shù)組指定位置的值
fmt.Println(a,len(a))//打印a數(shù)組、a數(shù)組長(zhǎng)度
fmt.Println(b) fmt.Println(c) fmt.Println(d,len(d)) fmt.Println(e,len(e))}1數(shù)組運(yùn)行結(jié)果為:[]1[ab][abc][abcd]4[ebcd]402切片切片聲明基于數(shù)組創(chuàng)建切片使用make()函數(shù)構(gòu)造切片使用append()為切片動(dòng)態(tài)添加元素使用copy()復(fù)制新的切片數(shù)組與切片相互轉(zhuǎn)換2切片動(dòng)態(tài)數(shù)組:切片可以按需自動(dòng)擴(kuò)充和縮減數(shù)組:長(zhǎng)度固定現(xiàn)實(shí)中會(huì)面臨:往數(shù)組內(nèi)增加>len(數(shù)組名)個(gè)元素varname[]type=[]type{……}切片聲明[]中不需要指定長(zhǎng)度,即:長(zhǎng)度是不固定的可以追加元素,在追加時(shí)可能使切片的容量增大,可以從數(shù)據(jù)中生成新的切片或者是聲明新的切片。切片特點(diǎn)packagemainimport"fmt"funcmain(){vara[]int=[]int{10,11,12,13}fmt.Println(a,len(a))}運(yùn)行結(jié)果為:[10111213]42切片varname[]type=數(shù)組名[開(kāi)始位置:結(jié)束位置]基于數(shù)組創(chuàng)建切片特點(diǎn)結(jié)束位置的元素不取切片數(shù)量=結(jié)束位置下標(biāo)-開(kāi)始位置下標(biāo)當(dāng)缺省開(kāi)始位置時(shí),表示從連續(xù)的區(qū)域開(kāi)頭到結(jié)束位置當(dāng)缺省結(jié)束位置時(shí),表示從開(kāi)始位置到整個(gè)連續(xù)區(qū)域末尾兩者同時(shí)缺省時(shí),與數(shù)組本身等效兩者同時(shí)為0時(shí),等于空切片,一般用于切片復(fù)位packagemainimport"fmt"funcmain(){a:=[5]string{"A","B","C","D"}varb[]string=a[1:2]fmt.Println(a)fmt.Println(b,len(b))}運(yùn)行結(jié)果為:[ABCD][B]1packagemainimport"fmt"funcmain(){a:=[5]int{76,77,78,79,80}varb[]int=a[1:3] //取a數(shù)組的第1到第3個(gè)元素varc[]int=a[:3] //取a數(shù)組的第0到第3個(gè)元素vard[]int=a[1:] //取a數(shù)組的第1到最后一個(gè)元素vare[]int=a[:] //取a數(shù)組的第0到最后一個(gè)元素varf[]int=a[0:0] //空切片fmt.Println(a,len(a))fmt.Println(b,len(b))fmt.Println(c,len(c))fmt.Println(d,len(d))fmt.Println(e,len(e))fmt.Println(f,len(f))}運(yùn)行結(jié)果為:[7677787980]5[7778]2[767778]3[77787980]4[7677787980]5[]02切片packagemainimport"fmt"funcmain(){a:=[5]string{"A","B","C","D","E"}varb[]string=a[1:3]fmt.Println("修改前的a數(shù)組:",a)fmt.Println("修改前的b切片:",b)
b[1]="2"fmt.Println("修改后的a數(shù)組:",a)fmt.Println("修改后的b切片:",b)}運(yùn)行結(jié)果為:修改前的a數(shù)組:[ABCDE]修改前的b切片:[BC]修改后的a數(shù)組:[AB2DE]修改后的b切片:[B2]2切片切片本身不包含任何數(shù)據(jù)切片僅僅是底層數(shù)組的一個(gè)上層表示對(duì)切片進(jìn)行的任何修改都將反映在底層數(shù)組中2切片packagemainimport("fmt")funcmain(){a:=[...]string{"A","B","C","D","E"}b:=a[1:3]fmt.Printf("數(shù)組a長(zhǎng)度為:%d\n切片b容量為:%d",len(a),cap(b))}運(yùn)行結(jié)果為:數(shù)組a長(zhǎng)度為:5切片b容量為:4切片的長(zhǎng)度是指切片中元素的個(gè)數(shù)切片的容量是指從切片的起始元素開(kāi)始到其底層數(shù)組中的最后一個(gè)元素的個(gè)數(shù)切片的長(zhǎng)度可以動(dòng)態(tài)的改變(最大為其容量)任何超出最大容量的操作都會(huì)發(fā)生運(yùn)行時(shí)錯(cuò)誤2切片varname[]type=make([]type,size,cap)使用make()函數(shù)構(gòu)造切片特點(diǎn)type指切片元素類型size指的是為這個(gè)類型分配多少個(gè)元素cap為預(yù)分配的元素?cái)?shù)量cap設(shè)定后不會(huì)影響size,只是為了提前分配空間,降低多次分配空間造成的性能問(wèn)題packagemainimport"fmt"funcmain(){vara[]int=make([]int,5,10)//創(chuàng)建一個(gè)切片,初始元素個(gè)數(shù)為5,并預(yù)留10個(gè)元素的存儲(chǔ)空間a[0]=10a[4]=14fmt.Println(a)}運(yùn)行結(jié)果為:[1000014]2切片append(name,value)append(name,[]type[value,value,value]...)使用append()為切片動(dòng)態(tài)添加元素特點(diǎn)可以為切片追加單個(gè)或多個(gè)元素;或者是追加切片使用append()函數(shù)為切片動(dòng)態(tài)添加元素時(shí),如果空間不足以容納足夠多的元素,切片就會(huì)進(jìn)行“擴(kuò)容”,此時(shí)新切片的長(zhǎng)度會(huì)發(fā)生改變。擴(kuò)展容量小于1024個(gè)元素時(shí)按當(dāng)前切片的容量(Cap)2倍擴(kuò)容,擴(kuò)展容量大于1024個(gè)元素時(shí)按Cap的1/4擴(kuò)容。2切片packagemainimport"fmt"funcmain(){a:=[]int{10,20,30,40,50}b:=a[1:3]fmt.Println(a)fmt.Println(b)b=append(b,60)fmt.Printf(“第一次追加后,切片a為:%d切片a容量為:%d\n",a,cap(a))fmt.Printf(“第一次追加后,切片b為:%d切片b容量為:%d\n",b,cap(b))b=append(b,70,80,90,100)fmt.Printf(“第二次追加后,切片a為:%d切片a容量為:%d\n",a,cap(a))fmt.Printf(“第二次追加后,切片b為:%d切片b容量為:%d\n",b,cap(b))}運(yùn)行結(jié)果為:[1020304050][2030]第一次追加后,切片a為:[1020306050]切片a容量為:5第一次追加后,切片b為:[203060]切片b容量為:4第二次追加后,切片a為:[1020306050]切片a容量為:5第二次追加后,切片b為:[203060708090100]切片b容量為:82切片copy(destSlice,srcSlice)使用copy()復(fù)制新的切片特點(diǎn)destSlice為復(fù)制的目標(biāo)切片srcSlice為數(shù)據(jù)來(lái)源切片目標(biāo)切片必須分配過(guò)空間且足夠承載復(fù)制的元素個(gè)數(shù),并且來(lái)源和目標(biāo)的類型必須一致。copy()函數(shù)來(lái)源切片和目標(biāo)切片可以共享同一個(gè)底層數(shù)組,甚至有重疊也沒(méi)有問(wèn)題。packagemainimport"fmt"funcmain(){a:=[]int{0,1,2,3,4,5}b:=[]int{10,11,12}fmt.Println(a)fmt.Println(b)copy(b,a)//只會(huì)復(fù)制a的前3個(gè)元素到b中
fmt.Println(a)fmt.Println(b)}運(yùn)行結(jié)果為:[012345][101112][012345][012]2切片packagemainimport"fmt"funcmain(){//切片轉(zhuǎn)成數(shù)組
s:=[]int{10,11,12}vara[3]intfmt.Println(copy(a[:],s))fmt.Println(a)}運(yùn)行結(jié)果為:3[101112]packagemainimport"fmt"funcmain(){//數(shù)組轉(zhuǎn)成切片
a:=[...]int{10,11,12}b:=make([]int,3)fmt.Println(copy(b,a[:]))fmt.Println(b)}運(yùn)行結(jié)果為:3[101112]數(shù)組與切片相互轉(zhuǎn)換時(shí):需要使用[:]將數(shù)組偽裝為切片類型后再進(jìn)行賦值,否則無(wú)法通過(guò)編譯數(shù)組與切片中的元素類型必須相同03map映射map定義使用make()函數(shù)創(chuàng)建map用切片作為map的值使用delete()函數(shù)刪除元素3map映射一種無(wú)序的key/value的集合;能夠通過(guò)key值快速檢索數(shù)據(jù)值。map這種數(shù)據(jù)結(jié)構(gòu)在其他編程語(yǔ)言中也稱為字典、映射或哈希表。Golang的map由兩種重要的結(jié)構(gòu)構(gòu)成:hmap和bmap。map定義聲明map集合varnamemap[key_type]value_type語(yǔ)法說(shuō)明如下:(a).name為map變量名;(b).key_type為鍵類型;(c).value_type為鍵對(duì)應(yīng)值類型。packagemainimport"fmt"funcmain(){a:=map[int]string{110:"報(bào)警電話",120:"急救電話",119:"消防電話"}fmt.Println(a)}運(yùn)行結(jié)果為:map[110:報(bào)警電話119:消防電話120:急救電話]3map映射make(map[KeyType]ValueType,[cap])使用make()函數(shù)創(chuàng)建map特點(diǎn)map可以在聲明的時(shí)候填充元素,也可以單獨(dú)填充元素map中的數(shù)據(jù)都是成對(duì)出現(xiàn)的map類型的變量默認(rèn)初始值為nil其中cap表示map的容量,該參數(shù)雖然不是必須的,但是我們應(yīng)該在初始化map的時(shí)候就為其指定一個(gè)合適的容量。packagemainimport"fmt"funcmain(){a:=make(map[string]int,10)a["報(bào)警電話"]=110;a["急救電話"]=120;a["火警電話"]=119;fmt.Println(a)}運(yùn)行結(jié)果為:map[急救電話:120報(bào)警電話:110火警電話:119]3map映射運(yùn)行結(jié)果為:[map[A:1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保健酒面試題目及答案
- 各年級(jí)必考題目及答案
- 養(yǎng)老院老人心理咨詢師福利待遇制度
- 養(yǎng)老院老人康復(fù)設(shè)施維修人員考核獎(jiǎng)懲制度
- 生產(chǎn)安全考試題目及答案
- 養(yǎng)老院康復(fù)設(shè)備管理制度
- 辦公室員工培訓(xùn)課程評(píng)價(jià)制度
- 鎮(zhèn)招商引資項(xiàng)目評(píng)審制度
- 銀行崗位分離的相關(guān)制度
- 部隊(duì)盤查登記制度
- 2026福建廈門市高崎出入境邊防檢查站招聘警務(wù)輔助人員30人備考題庫(kù)及完整答案詳解
- 2026西藏自治區(qū)教育考試院招聘非編工作人員11人筆試備考試題及答案解析
- 2026年度黑龍江省生態(tài)環(huán)境廳所屬事業(yè)單位公開(kāi)招聘工作人員57人備考題庫(kù)及一套答案詳解
- 炎癥因子風(fēng)暴與神經(jīng)遞質(zhì)紊亂的干細(xì)胞干預(yù)策略
- 2026年1月浙江省高考(首考)英語(yǔ)試題(含答案)+聽(tīng)力音頻+聽(tīng)力材料
- 中國(guó)大型SUV市場(chǎng)數(shù)據(jù)洞察報(bào)告-
- 太陽(yáng)能路燈施工組織設(shè)計(jì)
- 小兒膿毒癥教學(xué)課件
- 2026年江蘇衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試必刷測(cè)試卷及答案解析(名師系列)
- 高校行政人員筆試試題(附答案)
- 2025年農(nóng)村會(huì)計(jì)考試試題題庫(kù)及答案
評(píng)論
0/150
提交評(píng)論