網(wǎng)站 f型軟文營(yíng)銷的案例
1、指針
對(duì)比C/C++中的指針,go語(yǔ)言中的指針顯得極為簡(jiǎn)潔,只是簡(jiǎn)單的獲取某個(gè)空間的地址 或者 根據(jù)指針變量中的內(nèi)容 獲取對(duì)應(yīng)存儲(chǔ)空間的內(nèi)容等操作。
具體示例如下:
go中使用指針需要注意的點(diǎn):
- 可以通過(guò)指針改變它所指向的內(nèi)存空間中的內(nèi)容
- 指針變量接收的一定是具體的值
- 指針變量的地址必須相匹配
- 基本數(shù)據(jù)類型都有對(duì)應(yīng)的指針類型,形為 *數(shù)據(jù)類型
2、標(biāo)識(shí)符定義規(guī)則:
?1、組成部分:字母、數(shù)字、下劃線
?2、注意:不能以數(shù)字開(kāi)頭、嚴(yán)格區(qū)分大小寫、不能包含空格、不可以使用GO中保留的關(guān)鍵字
?3、見(jiàn)名知意:增加可讀性
?4、下劃線 “_”在go中本身是一種特殊的標(biāo)識(shí)符,稱之為空標(biāo)識(shí)符。所以下劃線僅能作為占位符使用,不能單獨(dú)作為標(biāo)識(shí)符使用。
?5、起名規(guī)則
??包名:package的名字盡量和目錄保持一致,盡量采取有意義的包名,做到簡(jiǎn)短、有意義但不要和標(biāo)準(zhǔn)庫(kù)發(fā)生沖突
??變量名、函數(shù)名、常量名:采用駝峰法
??注意:
???如果變量名、函數(shù)名、常量名首字母大寫,則可以被其他的包訪問(wèn),如果首字母小寫,則只能在本包中使用。
???import導(dǎo)入語(yǔ)句通常放在文件開(kāi)頭包申明的下面
???導(dǎo)入的包名需要使用雙引號(hào)引起來(lái)
???包名是從 $GOPATH/src/后開(kāi)始計(jì)算的,使用 / 進(jìn)行路徑分隔
3、關(guān)鍵字 && 預(yù)定義的標(biāo)識(shí)符
- 關(guān)鍵字就是程序發(fā)明者規(guī)定的具有特殊意義的單詞,又叫保留字。go語(yǔ)言中一共有25個(gè)關(guān)鍵字。
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
作用:這里做一簡(jiǎn)單介紹,后續(xù)遇到詳細(xì)展開(kāi)
- 預(yù)定義標(biāo)識(shí)符:go語(yǔ)言中一共有36個(gè)預(yù)定義標(biāo)識(shí)符,包含基礎(chǔ)數(shù)據(jù)類型和系統(tǒng)內(nèi)嵌函數(shù)
運(yùn)算符
注意:
?1、go中沒(méi)有條件運(yùn)算符(三目運(yùn)算符)
?2、go中只有后置++,–;沒(méi)有前置
4、輸入相關(guān),與用戶交互
方式1:使用 Scanln函數(shù),具體示例如下:
方式2:使用Scanf函數(shù)
5、go語(yǔ)言中的流程控制
順序結(jié)構(gòu) 、分支結(jié)構(gòu)、 循環(huán)結(jié)構(gòu)
分支結(jié)構(gòu)
?if分支
//單分支
if 條件表達(dá)式 {邏輯代碼
}
//多分支
if 條件表達(dá)式1 {邏輯1
} else if 條件表達(dá)式2 {邏輯2
} else if 條件表達(dá)式n {邏輯n
} else {xxx
}
//雙分支
if 條件表達(dá)式1 {邏輯1
} else {xxx
}
?使用的注意事項(xiàng):
??條件表達(dá)式左右的括號(hào)可以不寫,go語(yǔ)言中建議不寫
?? if else if 與表達(dá)式之間一定要有空格
??在 golang中,{}是必須要有的,哪怕只有一行代碼
?switch 分支
//基本語(yǔ)法
switch 表達(dá)式 {case 值1,值2...:語(yǔ)句塊1case 值3,值4...:語(yǔ)句塊2....default:語(yǔ)句塊
}
?使用注意事項(xiàng):
??1、switch后是一個(gè)表達(dá)式(常量值、變量、一個(gè)有返回值的函數(shù)均可以)
??2、case后的各個(gè)值的數(shù)據(jù)類型必須和switch后表達(dá)式的值類型一致
??3、case后可以跟多個(gè)表達(dá)式,使用逗號(hào)間隔
??4、case后面的表達(dá)式如果是常量值,則要求其不能重復(fù)
??5、case后面不需要帶break,程序匹配到一個(gè)case后就會(huì)執(zhí)行對(duì)應(yīng)的代碼塊,然后退出這個(gè)switch,如果一個(gè)都匹配不到,則會(huì)進(jìn)入default
??6、default語(yǔ)句不是必須的且位置是隨意的,但是建議寫上
??7、switch 后可以不帶表達(dá)式當(dāng)作if來(lái)使用,一般少見(jiàn)
??8、switch后面也可以直接定義一個(gè)變量用分號(hào)結(jié)束,不推薦
??9、switch穿透!利用fallthrough關(guān)鍵字。如果在case語(yǔ)句塊后加fallthrough,則程序會(huì)據(jù)繼續(xù)執(zhí)行下一個(gè)case,這個(gè)就叫做switch穿透
循環(huán)結(jié)構(gòu)
//語(yǔ)法結(jié)構(gòu)
for 初始表達(dá)式; 布爾表達(dá)式; 迭代因子; {循環(huán)體;
}
for循環(huán)語(yǔ)句是支持迭代的一種通用結(jié)構(gòu),是最有效、最靈活的循環(huán)結(jié)構(gòu)。
for循環(huán)在第一次反復(fù)之前需要進(jìn)行初始化,即執(zhí)行初始表達(dá)式,隨后對(duì)布爾表達(dá)式進(jìn)行判斷,true—>執(zhí)行循環(huán)體,false–>終止循環(huán)
在每一次循環(huán)過(guò)程中迭代因子不斷遞增 or 遞減
for range結(jié)構(gòu):是Go語(yǔ)言特有的一種迭代結(jié)構(gòu),在許多場(chǎng)景下都非常實(shí)用。for range可以遍歷數(shù)組、切片、字符串、map及通道。語(yǔ)法結(jié)構(gòu)如下:
for key, val := range coll {.....
}
對(duì)break關(guān)鍵字的理解:跳出當(dāng)前循環(huán),即跳出離break最近的那一層循環(huán)
for i:=0; i < 4; i++ {for j:=0; j < 4; j++ {if(i == 2 && j == 2) {break;}}
}
如果想要break直接跳出整個(gè)循環(huán),即跳出外層的for循環(huán),需要使用一個(gè)新的概念,叫做 標(biāo)簽,具體示例如下:
lable:for i := 0; i < 4; i++ {for j := 0; j < 4; j++ {fmt.Printf("i: %v, j: %v \n", i, j)if i == 2 && j == 2 {break lable}}}
同理,continue 關(guān)鍵字也有著同樣的用法,即 默認(rèn)生效的是離他最近的for循環(huán),但是可以通過(guò)加標(biāo)簽的方式達(dá)到對(duì)任意循環(huán)生效的效果。
goto
?Golang中的goto語(yǔ)句可以無(wú)條件的轉(zhuǎn)移到程序中的指定行(比如打個(gè)標(biāo)簽lable,使用goto lable實(shí)現(xiàn)無(wú)條件跳轉(zhuǎn))
?goto語(yǔ)句通常與條件語(yǔ)句配合使用,可以來(lái)實(shí)現(xiàn)條件轉(zhuǎn)移
?在Go程序設(shè)計(jì)中一般不建議使用goto語(yǔ)句,以免造成程序流程的混亂