1. 程式人生 > >Go語言學習筆記(1)——順序編程

Go語言學習筆記(1)——順序編程

寫法 AR [] 多重賦值 返回值 賦值 表達 div long

Go語言學習筆記這一堆主要是《Go語言編程》(人民郵電出版社)的讀書筆記。中間會穿插一些零碎的點,比如源碼學習之類的。大概就是這樣吧。

1. 順序編程

1.1 變量

變量的聲明:

var 變量名 類型

var v1 int

也可以把若幹變量的聲明用大括號括起來

var {
    v1 int
    v2 string
}

變量初始化:

變量的初始化可以用如下的方法:

var v1 int = 10
var v2 = 10
v3 := 10

這三種方法的效果大體上是一樣的。需要註意的有:第三種方法不能用於聲明全局變量;以及:=賦值符號不能用於已聲名過的變量名。

變量的賦值:

賦值這裏唯一特別的是,Go語言支持多重賦值,比如交換i和j的值:

i, j = j, i

匿名變量:

Go語言有一個特性,就是在引入的包和變量在沒有使用的時候,會在編譯階段報錯。所以對於不需要的變量,可以使用匿名變量進行處理。

兩個例子,第一個是多重返回函數的返回值的處理:

func GetName() (firstName, lastName, nickName string) {
    return "May", "Chan", "Chibi Maruko"
}

_, _, nickName := GetName()

如果只需要函數的部分返回值的時候,就可以利用匿名變量。

第二個是for循環:

var a int[] = {5, 4, 3
, 2, 1} for _, value := range(a) { balabala }

當我們不需要range返回的部分結果的時候,就可以利用匿名變量。

1.2 常量

字面常量:大概只有一點要說,就是不需要額外做特別的聲明。比如對於long類型的12,不存在12l這種寫法。

常量定義:通過const關鍵字進行定義。

const Pi float64 = 3.1415926

需要註意的大概有:聲明的時候可以不限定類型;常量定義的右值也可以是編譯期運算的常量表達式。

const Zero = 0.0
const mask = 1 << 3
const Home = os.GetEnv("
HOME")

這裏第三句會導致錯誤。因為右值只有在運行期才能知道結果。

預定義常量:true,false,iota。

這裏true和false沒有什麽說的。

iota可以被認為是一個可被編譯器修改的常量,該常量在每一個const關鍵字出現的時候被重置為0。在下一個const出現之前,每出現一次iota,其所代表的數字自動加1。

未完待續。

Go語言學習筆記(1)——順序編程