Notice
- 變量或函數命名須以字母或是下劃線開頭,大小寫有區分,不能包含運算符
_
是特殊標示符,用來忽略結果- 保留關鍵字如下:
break | default | func | interface | select |
---|---|---|---|---|
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthough | if | range | type |
continue | for | import | return | var |
Go程序的基本結構
1 | package main |
import (引用其他package)
通常會習慣寫成
1 | import ( |
可允許寫成
1 | import ("fmt") |
包中函數調用
- 同一個包中的函數可以直接調用,與大小寫無關
- 不同package中函數,通過包名+點+函數名進行調用 如:
calc.Add(100,200)
- 包之間的訪問規則:
- 大寫意味著這個函數/變量是可導出的
- 小寫意味著這個函數/變量是私有的 —->包外部不能訪問
Practice
寫一個程序,對於給定一個數字n,求出所有兩兩相加等於n的組合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16package main
import "fmt"
func two_num_sum(sum int){
for i:=0;i<=sum;i++ {
fmt.Printf("%d + %d = %d\n",i,sum-i,sum) //[1]
}
}
func main(){
var sum int
fmt.Printf("Input the sum number:")
fmt.Scanf("%d\n",&sum) //[2]
two_num_sum(sum)
}[1] fmt.Printf為格式化輸出,用法與c語言相同
[2] fmt.Scanf為格式化輸入,用法與c語言相同,須注意在變量前面加入取址符&
寫一個程序包含add和main兩個package,其中add包中有兩個變量:Name和Age,請問main包中如何訪問Name和Age?
day2\practice2\add\add.go
1
2
3
4package add
var Name string = "Taroballz" //[1]
var Age int = 27[1] 變量需大寫才能被外部包調用
宣告變量時就初始化,表示變量初始值即為=
右邊的值
因為Go屬於編譯型語言而非腳本語言,需要有入口函數去執行代碼
所以在main函數外部的全局域寫
1 | var Name string |
或是
1 | Name := "Taroballz" |
會因為找不到入口函數而無法賦值
day2\practice2\main\main.go
1
2
3
4
5
6
7
8
9
10package main
import ("fmt"
"go_lesson/day2/practice2/add"
)
func main(){
fmt.Println("My Name is",add.Name)
fmt.Println("I'm",add.Age,"years old")
}
包的別名
要是導入的包名太長,可自定義包的別名來取代原本的包名,並使用包的別名引用函數
格式
1 | import 別名 "包名" //[1] |
[1] 注意別名與包名之間的空格
example
1 | package main |
[1] 將fmt
包的別名自訂義為f
[2] 使用別名f
調用函數Println
result
1 | Hello World! |
tips
- 要是將包導入但不會去用到包中的函數或是變量的話可將別名改為
-
,表示將包導入並初始化,但是包被忽略不引用