一、變量分組聲明
在Go語言中门驾,同時聲明多個常量射赛、變量多柑,或者導(dǎo)入多個包時,可采用分組的方式進行聲明楣责。
import "fmt"
import "os"const i = 100
const pi = 3.1415
const prefix = "Go_"var i int
var pi float32
var prefix string
可以分組寫成如下形式:
import (
????"fmt"
????"os"
)const (
????i = 100
????pi = 3.1415
????prefix = "Go_"
)var (
????i int
????pi float32
????prefix string
)
二竣灌、iota枚舉
Go里面有一個關(guān)鍵字iota,這個關(guān)鍵字用來聲明enum的時候采用秆麸,它默認開始值是0初嘹,const中每增加一行加1:
const (
????x = iota // x == 0
????y = iota // y == 1
????z = iota // z == 2
????w? ? ? ? // 常量聲明省略值時,默認和之前一個值的字面相同沮趣。這里隱式地說w = iota屯烦,因此w == 3。其實上面y和z可同樣不用"= iota")
const v = iota // 每遇到一個const關(guān)鍵字房铭,iota就會重置驻龟,此時v == 0
const (
????h, i, j = iota, iota, iota //h=0,i=0,j=0 iota在同一行值相同
)
const (
????a? ? ? = iota //a=0
????b? ? ? = "B"
????c? ? ? = iota? ? ? ? ? ? //c=2
????d, e, f = iota, iota, iota //d=3,e=3,f=3
????g? ? ? = iota? ? ? ? ? ? //g = 4)
func main() {
????fmt.Println(a, b, c, d, e, f, g, h, i, j, x, y, z, w, v)
}
除非被顯式設(shè)置為其它值或iota,每個const分組的第一個常量被默認設(shè)置為它的0值缸匪,第二及后續(xù)的常量被默認設(shè)置為它前面那個常量的值翁狐,如果前面那個常量的值是iota,則它也被設(shè)置為iota凌蔬。
三露懒、零值
關(guān)于“零值”,所指并非是空值砂心,而是一種“變量未填充前”的默認值懈词,通常為0。
此處羅列 部分類型 的 “零值”
int 0
int8? ? 0
int32? 0
int64? 0
uint? ? 0x0
rune? ? 0 //rune的實際類型是 int32
byte? ? 0x0 // byte的實際類型是 uint8
float32 0 //長度為 4 byte
float64 0 //長度為 8 byte
bool? ? false
string? ""
四辩诞、goto
Go有g(shù)oto語句——請明智地使用它钦睡。用goto跳轉(zhuǎn)到必須在當前函數(shù)內(nèi)定義的標簽。例如假設(shè)這樣一個循環(huán):
func myFunc() {
????i := 0
Here:? //這行的第一個詞躁倒,以冒號結(jié)束作為標簽
????println(i)
????i++
????goto Here? //跳轉(zhuǎn)到Here去
}
標簽名是大小寫敏感的荞怒。
五、包導(dǎo)入
import name "fmt" // name.Println 別名方式
import _ "fmt" ? ?// 只初始化目標包
import . "fmt" ? ?// 省略包名
import "fmt" ? ? // fmt.Println 原始包名+方法(函數(shù))
六秧秉、包下載
1褐桌、使用go自帶的命令行工具
# go get -u -v ****
go get后面接入的參數(shù)即是:github或者其他托管網(wǎng)站的代碼路徑。
2象迎、gopm
gopm 也屬于一個 go 第三方庫荧嵌,需要使用第一種方式下載安裝:
# go get -u github.com/gpmgo/gopm
下載完成后呛踊,使用gopm下載第三方庫
# gopm get ****
后面接項目路徑。用法和go get 幾乎一致啦撮。
七谭网、包管理
自己創(chuàng)建的項目中如何管理第三方包呢? 即:將用到的第三方包移至個人項目工程下。
govendor
# go get -u github.com/kardianos/govendor
govendor init
這一步觸發(fā)的動作是創(chuàng)建:vendor 目錄 和 vendor.json 文件赃春。
govendor add +external
這一步觸發(fā)的動作是:將自己項目中使用到的第三方庫愉择,復(fù)制到vendor 目錄下,并維護vendor.json文件织中。