go語言之旅 三

2021-09-26 02:29:40 字數 953 閱讀 3344

指標

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...