Go 入門 – 包,函式和變數

ZihaoWang發表於2018-10-10

主要內容來自中文版的官方教程Go語言之旅
目的為總結要點

包,函式和變數

import 語法,多個用括號換行擴起,包之間不需要間隔符,用引號引起

import (
    "fmt"
    "math/rand"
)
// 官方認為分組匯入比多個匯入更好
// 用`.`引用包內物件,僅有首字母大寫的那些物件是可匯出的

函式

函式宣告

func add(x int, y int) int { //型別在變數名之後
    return x + y
}

func add(x, y int, s string) int { // 其實輸入變數就像是沒有var的變數宣告一樣
    fmt.Println(s) 
    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
}

變數

var c, python, java bool // var 可以用在包或者函式級別的宣告中
var i, j int = 1, 2 // 變數可以初始化
var c, python, java = true, false, "no!" // 初始化值存在時,可以省略型別
c, python, java := true, false, "no!" // 和上一個等效
var (
    c, python bool
    java string
) // 這種操作也是存在的

我們說var =:= 是等價的。但是函式外(包之外)的每一個語句都必須以關鍵字開頭,因此:=這種結構不能用在函式之外。

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的別名

rune // int32 的別名
     // 表示一個 Unicode 碼點

float32 float64

complex64 complex128 // go 支援複數運算

go 的變數需要顯示型別轉換

var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
// 如果在函式內
i := 42
f := float64(i)
u := uint(f)

常量宣告

const World = "世界"

不能用:=,數值常量是高精度的值,有意思的是,他可以被解釋成intfloat

相關文章