2018年6月30日
基礎命令
- go build 用於編譯源碼檔案、程式碼封裝、依賴包
可執行檔路徑為 $GOPATH/bin
- go run 編譯並運行go源碼檔案
- go get 動態擷取遠程程式碼封裝
系統關鍵字或保留字
1,保留關鍵字
|
|
|
|
|
break |
default |
func |
interface |
select |
case |
defer |
go |
map |
struct |
chan |
else |
goto |
package |
switch |
const |
fallthrough |
if |
range |
type |
continue |
for |
import |
return |
var |
2, 預定的標識符,包括基礎資料類型和系統內嵌函數。
|
|
|
|
|
|
append |
bool |
byte |
cap |
close |
complex |
complex64 |
complex128 |
uint16 |
copy |
false |
float32 |
float64 |
imag |
int |
int8 |
int16 |
uint32 |
int32 |
int64 |
iota |
len |
make |
new |
nil |
panic |
uint64 |
print |
println |
real |
recover |
string |
true |
uint |
uint8 |
uintprt |
3,內嵌資料類型
Boolean類型:
Byte類型:
數字類型:
- 整數類型:
有符號整數:int8, int16, int32, int64和int(此類型會根據特定的平台可能會有所不同)
不帶正負號的整數:uint8, uint16, uint32, uint64和uint (此類型會根據特定的平台可能會有所不同)
初始預設值為:0。
格式化輸出時的格式字串為:%d,輸出16進位:%x或%X;8進位:%o。
執行個體代碼:
輸出結果為:
i8=9, i=27, ui32=30, ui64=40, defInt=0
i8=11, i=1b, ui32=1E, ui64=101000
The value=27, The Address=0x117d0238
- 浮點類型:float32 和 float64
- 複數類型:
字元類型:
- 嚴格的說,在Go中沒有此類型類型,它是特殊的整數類型。
- 它對應uint8類型,對傳統的ASCII碼對應,佔1byte。
- 同時也支援Unicode(UTF-8)的編碼,所以它可能點多個byte,被稱為Unicode code points或runes。此時它對應的int32的數字類型。
- 包含在單引號中。
- Unicode的字元通常以16進位的形式表示(\u+4或\U+8)
- 格式化輸出時的格式字串為:%c;%v或%d則顯示對應的整數值;%U則輸出:U+hhhh
字串類型:
- 一串UTF-8編碼格式的字元(可能佔1~4byte)---- Java中的字元都是佔2bytes。
- 包含在雙引號中,只能在獨立的一行內。(Interpreted string)
- 包含在反引號中,可以跨越多行。(raw string)
- 註:Go所有的代碼都是UTF-8格式,所以不存在對字元進行編碼和解碼。
- 它是不可變的實值型別,所以不能直接修改字串。
指標類型:
- 佔4byte大小。
- 各種資料類型都有對應的指標類型。
- 聲明方法類似於C中對指標的聲明: *type。
4 操作符
- 邏輯運算子:
- 與:&&,或:||,非:!。
- ==,!=,<,>,<=,>=
- 位元運算符:
- 只能工作在int類型的變數上。
- 按位與:&,按位或:|,按位異或:^
- 左移:<<,右移:>>。(空位補0)
- 算術運算子:
- +,-,*,/。
- 模數:%
- 簡化操作:-=,*=, +=, %=
- ++, --。(只能在數字變數的後面,不能放在開頭,這是與C,Java不一樣的地方)。
- 優先順序:(7 -> 1:由高到低)
全域變數
在func 之外
局部變數
在func之內
源碼檔案模板
package main// 程式所屬包import "fmt"//匯入依賴包const NAME string = "SoulMO"//定義常量var a string = "Golang學習"//聲明全域變數及賦值type GoLearntInt int//一般型別宣告type Learn struct{}//結構體聲明type ILearn interface { }//聲明介面func GoLearn() { fmt.Println(a,"learn Golang")}//定義函數func main() { GoLearn(); fmt.Println(a,"Hello ~")}// main函數
基礎文法
1, package
- package 是最基本的分發單位和工程管理中依賴關係的體現
- 每個GoLang原始碼檔案開頭都擁有一個package 聲明,表示原始碼檔案所屬程式碼封裝
- 產生GoLang可執行程式,必須要有main的package包,且改包下必須有main()
- 同一路徑下只能存在一個package,一個package可以由多個原始碼檔案組成
package 包名為當前檔案夾名,避免混淆
2,import
3類型零值
實值型別 預設為 0
布爾類型 預設為 false
string 預設為 Null 字元串
3,參數聲明初始化及賦值
變數聲明格式
var <變數名稱> [變數類型]
變數賦值格式
<變數名稱> = <值,運算式,函數等>
變數聲明並賦值格式
var <變數名稱> [變數類型] = <值,運算式,函數等>
分組聲明格式
var( i int j float32 name string)
單行 聲明多個變數和賦值
var a, b, c int = 1, 2, 3
或者a, b := 1, 2
全域變數聲明必須用var,局部變數可省略
特殊變數 底線“_”;
若將值賦給 “_” 則代表 值被銷毀,接下來的操作將無法調用該值
go類型轉換必須是顯式的
類型轉換隻能發生在兩種相容類型之間
類型轉換格式 <變數名稱> [:]= <目標類型>
變數為大寫字母開頭的 是公用變數,可被其他包讀取調用
變數為小寫字母開頭的 為私人變數,只能被當前包使用