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