Go程序結構

1.1 名稱

Go中函數,變量,常量,類型,語句標籤和包的名稱遵循一個簡單的命名規則:名稱的開頭是一個字母或下劃線,並且區分大小寫
注:實體的第一個字母的大小寫決定了其可見性是否可以跨包。如果名字是大寫字母的開頭,它是導出的,意味着它對包外可見和可訪問的,可以被包外的其他程序所引用(拷貝),像 fmt 包中的 Printf.包名總是由小寫字母組成。

1.2 聲明

聲明給一個實體命名,並且設定其全部屬性。
有四個主要的聲明:變量(var),常量(const),類型(type)和函數(type)。

1.3 變量

    短變量聲明

var flo int = 100
flo := 100
上面這兩個式子等價

多個變量可以以短變量聲明的方式聲明和初始化
i, j := 0, 1
i, j := os.Open(name) //os.Open()函數有兩個返回值

短變量至少要聲明一個一個新變量,否則,代碼無法編譯通過
f, err := os.Open(infile) //編譯通過
f, err := os.Create(outfile) //編譯錯誤,沒有新變量

    指針

指針的值是變量的地址。不是所有的值都有指針,但是所有的變量都有指針。
注:Go語言中的指針,指針本身不可作計算,不能使用 ++,– 等操作

    new 函數

一種創建變量的方式就是使用內置的 new 函數。
new(T) 創建一個未知名的 T 類型變量,初始化爲 T 類型的零值,並返回其地址(地址類型爲 *T)

    變量的生命週期

生命週期是指在程序執行過程中變量存在的時間段。
編譯器可以選擇使用堆或棧的空間來分配內存,但是這個選擇不是基於使用的 var,new 關鍵字來聲明變量。
var global *int
func f(){
var x int
x = 1
global = &x //這裏,x 一定使用的是 堆 上的空間,因爲他的 f()函數返回後,還可以從 global 變量訪問,儘管他被聲明成一個局部變量
}

1.4 賦值

    多重賦值

x, y = y, x
a[i], a[j] = a[j],a[i]
i, j, k = 1, 2, 3
函數有多個返回值也可以
f, err = os.Open(“foo.txt”) //函數調用返回兩個值
_, err = os Open(“foo.txt”) //可以丟棄第一個返回值,接收第二個返回值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章