指標
go與c語言一樣,擁有指標。指標儲存了值的記憶體位址。
型別*t是指向t型別值的指標。其零值為nil。定義如下:
var p *int
與 c 不同,go 沒有指標運算。
結構體
與c語言類似,除了定義方式不同之外,其他都與c相同,如訪問方式 等。
陣列
型別 [n]t 表示擁有 n 個 t 型別的值的陣列。如:
var a [10]int
切片
陣列支援切片,這點類似python語言。切片通過兩個下標來界定,即乙個上界和乙個下界,二者以冒號分隔:
a[low : high]
它會選擇乙個半開區間,包括第乙個元素,但排除最後乙個元素。如:a[1:4]表示a 中下標從 1 到 3 的元素。
切片只是一種對陣列的引用。切片下界的預設值為 0 ,上界則是該切片的長度。
用make建立切片
切片可以用內建函式 make 來建立,這也是你建立動態陣列的方式。如:
a := make(int, 5) // len(a)=5
切片可包含任何型別,甚至包括其它的切片。
range
for 迴圈的 range 形式可遍歷切片或對映。如:
var pow = int
func main()
}可以將下標或值賦予 _ 來忽略它。
對映map
type vertex struct
var m = map[string]vertex,
"google": ,
}函式值
類似c語言。
函式閉包(closures)
??暫時沒弄懂,等用到再細看。
last update: 2018-03-04
go語言之旅 二
package main import fmt func main if else if x 2 0 else num 1 多分支 go語言只有一種迴圈結構,即for迴圈。語法如下 sum 0 for i 0 i 10 i 注意 for語句後面沒有小括號。for語句前後兩部分都是可以省略的,如 su...
Go語言之旅 閉包
閉包是在詞法上下文中引用了自由變數的函式,這種說法可能太過學術化了,很難理解。用通俗的話來說,閉包相當於在乙個函式中,去捕獲自由變數 在函式外部定義但在函式內被引用的變數 當脫離了捕獲該自由變數的上下文,依舊可以使用該自由變數。我們來看乙個例子 func test x int func func m...
Go 語言之旅 2(通道 併發互斥)
這裡要求實現walk和same函式,將樹的值依次送到通道裡,然後在再same裡進行比較。這裡使用到了通道。package main import golang.org x tour tree import fmt walk 步進 tree t 將所有的值從 tree 傳送到 channel ch。f...