




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Go語言講解Go語言介紹:Go語言專門針對(duì)多處理器系統(tǒng)應(yīng)用程序的編程進(jìn)行了優(yōu)化,使用Go編譯的程序可以媲美C或C++弋碼的速度,而且更加安全、支持并行進(jìn)程。Go是一門并發(fā)支持、垃圾回收的編譯型系統(tǒng)編程語言,旨在創(chuàng)造一門具有在靜態(tài)編譯語言的高性能和動(dòng)態(tài)語言的高效開發(fā)之間擁有良好平衡點(diǎn)的一門編程語言。并發(fā)性:。Go語言為此專門創(chuàng)造出了一個(gè)關(guān)鍵字“ go”。使用這個(gè)關(guān)鍵字,我們就可以很容易的使一個(gè)函數(shù)被并發(fā)的執(zhí)行:編程者不用考慮內(nèi)存的泄露或者野指針的事情,因?yàn)镚O:編程者不用考慮內(nèi)存的泄露或者野指針的事情,因?yàn)镚O語言會(huì)對(duì)內(nèi)存進(jìn)行管理。Go的主要特點(diǎn)有哪些?類型安全和內(nèi)存安全以非常直觀和極低代價(jià)的方案實(shí)現(xiàn) 高并發(fā)高效的垃圾回收機(jī)制快速編譯(同時(shí)解決c語言中頭文件太多的問題)為多核計(jì)算機(jī)提供性能提升的方案 可以指定cpu核數(shù)UTF-8編碼支持可以支持多種字符格式Go語言編寫規(guī)則:Go內(nèi)置25個(gè)關(guān)鍵字(均為小寫)breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitch
constfallthroughifrangetypeconstfallthroughifrangetypecontinuefor import return var注釋方法同C語言//:單行注釋/**/:多行注釋Go程序的一般結(jié)構(gòu):命名方式:basic_structure.goGo程序是通過package來組織的(與python類似)只有package名稱為main的包可以包含main函數(shù)一個(gè)可執(zhí)行程序有且僅有一個(gè)main包通過import關(guān)鍵字來導(dǎo)入其它非 main包通過const關(guān)鍵字來進(jìn)行常量的定義通過在函數(shù)體外部使用 var關(guān)鍵字來進(jìn)行全局變量的聲明與賦值通過type關(guān)鍵字來進(jìn)行結(jié)構(gòu)(struct)或接口(interface) 的聲明通過func關(guān)鍵字來進(jìn)行函數(shù)的聲明
VisualStudioCpde至看(V)鴛刮越)嗯總(D}甚題iH]吏用 ShellaljgoX1〃當(dāng)前程厚的包名packagerndin _JL■"導(dǎo)入其他的包import"常量的定5(constpi=3*1410"全局變量的聲明5賦值11varnam@=TH"13〃一般類型的聲明141EtypenewTypeirvt±J16"結(jié)構(gòu)聲明171Qtypeadcstruct{}lo"接口的聲明typegolanginterfac?{}"由n日in()函數(shù)作為程序入口點(diǎn)啟動(dòng)funcmain(){RLfmt,Println("Hello *)}f^SE:\GoEAGoHellot匹t\格式覽明,t/tA格式說明Agorunhellol.go世界!E:\GotestXft式說明>[]Go語言中,使用大小寫來決定該常量、變量、類型、接口、結(jié)構(gòu)或函數(shù)是否可以被外部包所調(diào)用:根據(jù)約定,函數(shù)名首字母 小寫即為privategetField(vreflect+Value,i refleval:=■v.Field(i)ifval.Kind()==reflect.Interface£&!val=wal函數(shù)名首字母大寫即為public函數(shù)名首字母大寫即為publicPrintf(format呂ingj,衣,.*interf3ce{J)Fprintf(osiStdoutjformat?呂…}Go語言基本類型部分:布爾型:bool-長(zhǎng)度:1字節(jié)-取值范圍:true,false-注意事項(xiàng):不可以用數(shù)字代表true或false整型:int/uint-根據(jù)運(yùn)行平臺(tái)可能為32或64位8位整型:int8/uint8-長(zhǎng)度:1字節(jié)-取值范圍:-128~127/0~255字節(jié)型:byte(uint8別名)16位整型:int16/uint16-長(zhǎng)度:2字節(jié)-取值范圍:-32768~32767/0~6553532位整型:int32(rune)/uint32-長(zhǎng)度:4字節(jié)-取值范圍:-2人32/2~2人32/2-1/0~2人32-164位整型:int64/uint64-長(zhǎng)度:8字節(jié)-取值范圍:-2A64/2~2A64/2-1/0~2A64-1浮點(diǎn)型:float32/float64-長(zhǎng)度:4/8字節(jié)-小數(shù)位:精確到7/15小數(shù)位復(fù)數(shù):plex64/plex128-長(zhǎng)度:8/16字節(jié)足夠保存指針的32位或64位整數(shù)型:uintptr其它值類型:-array、struct、string引用類型:-slice、map、chan接口類型:inteface函數(shù)類型:func變量的聲明和賦值形式:變量的聲明格式:var<變量名稱><變量類型>變量的賦值格式:<變量名稱>=<表達(dá)式>聲明的同時(shí)賦值:var<變量名稱>[變量類型]=<表達(dá)式>bint=321d:=456第一種:主要用于全局變量的使用中第二種:此種定義方式,用于變量進(jìn)行運(yùn)算的時(shí)候,所得到的結(jié)果也許會(huì)和變量的類型不一樣,系統(tǒng)可以自行推斷結(jié)果變量的類型,所以這也是很方便的。第三種:設(shè)置變量時(shí),你已經(jīng)有一個(gè)初始值時(shí),就可以用這種方式。常量的定義常量的值在編譯時(shí)就已經(jīng)確定常量的定義格式與變量基本相同等號(hào)右側(cè)必須是常量或者常量表達(dá)式常量表達(dá)式中的函數(shù)必須是內(nèi)置函數(shù)t可int*1b='A't(te)ct=dh123"length= )num=b*2?ti,j,lc=1, 3t(te)ct2jlengthSjnum?-"45611jlcn(text2),k*10運(yùn)算符Go中的運(yùn)算符均是從左至右結(jié)合優(yōu)先級(jí)(從高到低)一元運(yùn)算符)二元運(yùn)算符)專門用于二元運(yùn)算符)專門用于channel)*/%<<>>&&A+-|A__!=<<=>=><-&&||指針Go雖然保留了指針,但與其它編程語言不同的是,在 Go當(dāng)中不支持指針運(yùn)算以及”->”運(yùn)算符,而直接采用”.”選擇符來操作指針目標(biāo)對(duì)象的成員操作符”&”取變量地址,使用”*”通過指針間接訪問目標(biāo)對(duì)象默認(rèn)值為nil而非NULL循環(huán)語句forGo只有for一個(gè)循環(huán)語句關(guān)鍵字,但支持3種形式初始化和步進(jìn)表達(dá)式可以是多個(gè)值條件語句每次循環(huán)都會(huì)被重新檢查,因此不建議在條件語句中使用函數(shù),盡量提前計(jì)算好條件并以變量或常量代替左大括號(hào)必須和條件語句在同一行篇¥Ia-H-i*a>3IfmrtnPrintlr(a)main(){a■for'a<=3{a++)fnit,PrintIn(i<)nain()\a:=1f<i:=0;i<i+f{at+fmt.P-intln(a)選擇語句switch可以使用任何類型或表達(dá)式作為條件語句不需要寫break,一旦條件符合自動(dòng)終止如希望繼續(xù)執(zhí)行下一個(gè) case,需使用fallthrough語句支持一個(gè)初始化表達(dá)式(可以是并行方式),右側(cè)需跟分號(hào)左大括號(hào)必須和條件語句在同一行“rnain(){a:=15 :L“rnain(){a:=15 :L日{(diào)t"I:=9:fmt.Printing"a-0p)C5F1:fwt.PrinHnCa=l")main(){E;=fnt.Println(B)fmt.Println(a)j1;fBt.Println(?■=!'}a1;?itch{a>-ft:fnrt?Prin-tln(',a=e,1)jn_tii■h.ax1:flirt.Println( )main(){switca>=e:f祉.Printh(飛蝴?)切片SliceGo語言切片是對(duì)數(shù)組的抽象。Go數(shù)組的長(zhǎng)度不可改變,在特定場(chǎng)景中這樣的集合就不太適用, Go中提供了一種靈活,功能強(qiáng)悍的內(nèi)置類型切片(”動(dòng)態(tài)數(shù)組”),與數(shù)組相比切片的長(zhǎng)度是不固定的, 可以追加元素,在追加時(shí)可能使切片的容量增大。創(chuàng)建切片:varslicel[]type=make([]type,len)也可以簡(jiǎn)寫為slicel:=make([]type,len)也可以指定切片的容量make([]T,length,capacity)切片的初始化s:=[] int{1,2,3}切片截取s1:=s[startIndex:endIndex]將s中從下標(biāo)startIndex到endIndex-1下的元素創(chuàng)建為一個(gè)新的切片示例:packagemainimport"fmt"funcmain(){/*創(chuàng)建切片*/numbers:=[]int{0,1,2,3,4,5,6,7,8}printSlice(numbers)/*打印原始切片*/fmt.Println("numbers==",numbers)
/*打印子切片從索引1(包含)到索引4(不包含)*/fmt.Printin("numbers[1:4]==" ,numbers[1:4])/*默認(rèn)下限為0*/fmt.Println("numbers[:3]==" ,numbers[:3])/*默認(rèn)上限為len(s)*/fmt.Println("numbers[4:]==" ,numbers[4:])numbers1:=make([]int,0,5)printSlice(numbers1)/*打印子切片從索引 0(包含)到索引2(不包含)*/number2:=numbers[:2]printSlice(number2)/*打印子切片從索引2(包含)到索引5(不包含)*/number3:=numbers[2:5]printSlice(number3)}funcprintSlice(x[]int){fmt.Printf("len=%dcap=%dslice=%v\n",len(x),cap(x),x)}以上代碼的執(zhí)行結(jié)果:len=9cap=9slice=[012345678]
numbers==[012345678]numbers]1:4]==[123]numbers[:3]==[012]numbers]4:] ==[45678]len=0cap=5slice=[]len=2cap=9slice=[01]len=3cap=7slice=[234]Append()和copy()函數(shù)如果想增加切片的容量,我們必須創(chuàng)建一個(gè)新的更大的切片并把原分片的內(nèi)容都拷貝過來。下面的代碼描述了從拷貝切片的 copy方法和向切片追加新元素的append方法。Go語言Map(集合)Map是一種無序的鍵值對(duì)的集合。 Map最重要的一點(diǎn)是通過key來快速檢索數(shù)據(jù),key類似于索引,指向數(shù)據(jù)的值。Map是一種集合,所以我們可以像迭代數(shù)組和切片那樣迭代它。不過, Map是無序的,我們無法決定它的返回順序,這是因?yàn)?Map是使用hash表來實(shí)現(xiàn)的。定義M即可以使用內(nèi)建函數(shù)make也可以使用map關(guān)鍵字來定義Map:/*聲明變量,默認(rèn)map是nil*/varmap_variablemap[key_data_type]value_data_type/*使用make函數(shù)*/map_variable=make(mapkey_data_type]value_data_type)示例packagemainimport"fmt"
funcmain(){varcountryCapitalMapmap[string]string/*創(chuàng)建集合*/countryCapitalMap=make(mapstring]string)/*map插入key-value對(duì),各個(gè)國家對(duì)應(yīng)的首都 */countryCapitalMapcountryCapitalMapcountryCapitalMapcountryCapitalMapcountryCapitalMap["Italy"]="Rome"["Japan"]="Tokyo"countryCapitalMap["India"]="NewDelhi"/*使用key輸出map值*/forcountry:=rangecountryCapitalMap{fmt.Println("Capitalof",country,"is",countryCapitalMap[country])或集合(map)的元素}/*range關(guān)鍵字用于for循環(huán)中迭代數(shù)組(array)、切片(slice)或集合(map)的元素在數(shù)組和切片中它返回元素的索引值,在集合中返回 key-value對(duì)的key值。*//*查看元素在集合中是否存在 */captial,ok:=countryCapitalMap["UnitedSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)力和生產(chǎn)關(guān)系新質(zhì)生產(chǎn)力
- 新護(hù)士崗前培訓(xùn)心得體會(huì)模版
- 科室護(hù)理工作匯報(bào)材料
- 銀行營銷面試題目及答案
- 銀行內(nèi)聘面試題目及答案
- 醫(yī)院消防試題知識(shí)及答案
- 一級(jí)消防工程師模擬試題及答案
- 濕疹的護(hù)理常規(guī)
- 跨國度假緊急醫(yī)療援助服務(wù)補(bǔ)充協(xié)議
- 全球化市場(chǎng)拓展人員招聘與派遣合同
- 全套電子課件:管理學(xué)
- 高職汽車專業(yè)群“產(chǎn)教聯(lián)動(dòng)、鏈群對(duì)接、崗課融通、專創(chuàng)結(jié)合”人才培養(yǎng)體系研究
- 漢字的起源適合小學(xué)生課件
- 幼兒園紅色故事:一封雞毛信
- 2023年度內(nèi)蒙古自治區(qū)政府采購評(píng)審專家資格典型題匯編及答案
- 中職學(xué)校招生接待流程
- 機(jī)動(dòng)車檢測(cè)站2023年評(píng)審準(zhǔn)則版質(zhì)量手冊(cè)程序文件質(zhì)量記錄合集
- 公安技術(shù)與警務(wù)指揮作業(yè)指導(dǎo)書
- 老年危重癥患者的護(hù)理
- 《隧道測(cè)量》課件
- 《痤瘡與抗痤瘡藥》課件
評(píng)論
0/150
提交評(píng)論