這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文地址:leitwolf.github.io
撰於 2015-02-14
最近在學習Go語言,按照學習指南學的,現把學習過程記錄一下。
這一章學習包、變數和函數。
包
包定義都是在第一行,如:
package main
匯入別的包則用import,如:
import "fmt"import "math"
也可以這樣:
import ( "fmt" "math/rand")
如果你引入了一個包,但沒有使用它,是沒法編譯通過的,出錯資訊如下:
imported and not used: "math"
因為Go語言是靜態編譯,引入沒有使用的包會增大最終執行檔案的體積,所以Go強制這樣做。
Go語言提供了很多的標準包,具體可以看看Go庫文檔(中文)。
Go語言編譯運行時(go run xxx.go),該檔案裡必須有main包和main函數才能運行。
Go語言語句結尾都沒有分號;。
函數
函數以func關鍵字定義,如下:
func add(x int, y int) int { return x + y}func swap(x, y string) (string, string) { return y, x}func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return}func main() { fmt.Println(add(42, 13)) a, b := swap("hello", "world") fmt.Println(a, b) fmt.Println(split(17))}
- 參數的型別宣告是放在變數名後面的。
- 如果參數類型一樣,除了最後一個要宣告類型,之前的都可以省略。
- 傳回值的類型放在
)和{之間,如果沒有傳回值,則為空白。
- 可以返回多個值,這時候返回的類型要用
(`)`包含起來。
- 傳回值可以被命名,
return直接返回。
- 函數
main為主函數,一個項目裡只有一個。
變數
變數以var關鍵字定義,型別宣告放在後面,可以賦初始值。
var a intvar b boolvar c, d float64 = 2.5, 5.0
也可以這樣定義:
func main() { k := 3 c, d, e := false, 1, "hello"}
這個時候變數的類型由右邊給出的值來推斷,但這種形式:=只能在函數內部使用。
常量
常量以const關鍵字定義,如:
const Pi = 3.14
常量不能以:=定義。
常量的類型是由右邊的值來推斷。
基本類型
Go語言的基本類型有:
bool // 初始值 falsestring // 初始值為""(Null 字元串)int int8 int16 int32 int64uint uint8 uint16 uint32 uint64 uintptrbyte // uint8 的別名rune // int32 的別名 // 代表一個Unicode碼float32 float64complex64 complex128
數實值型別的初始值是0。
類型轉換,Go中沒有隱型的類型轉換,所有的轉換都需要顯式的轉換,如:
var i int= 42var f float64 = float64(i)
或者:
i := 10f := float64(i)
注釋
Go可以這樣注釋:
/* 這是注釋*/
也可以這樣:
// 這是注釋
好了,這一章就這樣了,先學個基礎。