golang官方《A Tour of Go》學習筆記
基礎
包(package)
go 語言程序都由包構成,且從 main 包開始運行,程序中如果要使用其它包,需使用 import 語句導入
pakcage main
import(
"fmt"
)
func main(){
fmt.Println("Hello Go!")
}
Exported name
在 Go 語言中,如果一個名字的首字母是大寫字母,那麼把它稱之爲 Exported name,Exported name。當在代碼中導入一個包後,只能訪問這個包中的 Exported name。
package main
import(
"fmt"
"math"
)
func main(){
fmt.Println("The Pi value is",main.Pi)
}
函數(funciton)
- 函數可以有零個或多個參數
func add(x int, y int) int{
return x + y
}
- 如果兩個或多個連續的參數類型相同,除了最後一個參數,其它參數的類型可以省略。
func add(x, y int) int{
return x + y
}
- 函數可以返回任意多個返回值
func swap(x, y string)(string, string){
return y, x
}
- Named return values
package main
import "fmt"
func split(sum int) (x, y int){
x = sum * 4 / 9
y = sum - x
return
}
func main(){
fmt.Println(split(17))
}
變量
var
關鍵字用來聲明一組變量,類似於函數的參數列表,類型在最後面
var
語句既可以在包級別也可以在函數級別
func main(){
var i int
fmt.Println(i, c, python, java)
}
var
聲明語句中可以每個變量可以包含初始化值
var i, j int = 1,2
func main(){
var c, python, java = true, false, "no!"
fmt.Println(i, j, c, python, java)
}
在函數中,通常用短變量複製語句:=
代替var
語句
func main(){
var i, j int = 1, 2
k := 3
c, python, java := true, false, "no!"
fmt.Println(i, j, k, c, python, java)
}
在函數外面,每條語句必須以關鍵字(var
,func
,等)開頭,即:=
不能用在函數外面。
基本類型
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32
// represents a Unicode code point
float32 float64
complex64 complex128
package main
import(
"fmt"
"math/cmplx"
)
var (
ToBe bool = false
MaxInt uint64 = 1<<64 - 1
z complex128 = cmplx.Sqrt(-5 + 12i)
)
func main(){
fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
fmt.Printf("Type: %T Value: %v\n", z, z)
}
多種不同類型的聲明語句可以用類似於包導入的方式聲明
通常情況下,int
,uint
和uintptr
類型在 32 爲操作系統中佔用 32 字節,在 64 爲操作系統中佔用 64 個字節