前面總結了我們剛開始學習golang時可能會遇到的坑,要注意那些問題,不瞭解的同學,可以請查看前面的文章。學習任何一門語言瞭解它的語法是最關鍵的,而且golang和其他面向對象的語言的語法還不太一樣。所以接下來就來說一說Go語言的基礎語法知識。
1. Go 程序的基本結構
下面是一個Go 程序的基本結構,包含(包聲明,引入包,函數等)
<code>\tpackage main // 定義包名,package main表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。
import "fmt" // 導入需要使用的包(的函數,或其他元素)
func main() { // 程序的入口函數。main 函數是每一個可執行程序所必須包含的,一般來說都是在啟動後第一個執行的函數。
fmt.Println("Hello, World!")
}/<code>
2. 數據類型
go內建基本數據類型包括基本數據類型和高級數據類型
1. 基本數據類型
布爾類型(bool)
數值類型
整數類型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
浮點類型(float32,float64)
複數類型(complex64,complex128)
字符串類型
string Go的字符串是由單個字節連接起來的。使用UTF-8編碼標識Unicode文本。
2. 高級數據類型
數組(array)
切片(slice)
字典(map)
通道(channel)
函數(function)
結構體(function)
接口(interface)
指針(*Xxx,Pointer,uintptr)
如果按照底層結構劃分,值類型包括(所有基本數據類型,數組,結構體),引用類型包括(slice,map,channel,function,interface,指針)
3. 變量&常量
1. 變量名由字母、數字、下劃線組成,其中首個字母不能為數字,例:var name string
a.指定變量類型,聲明後若不賦值,使用默認值。
var name string
name = "李四"
b.根據值自行判定變量類型。
var name = "李四"
c.簡短形式,省略var, 注意
age := 10
注意:
(:=)是使用變量的首選形式
(:=)只能被用在函數體內,而不可以用於全局變量的聲明與賦值。
(:=)左側的變量不應該是已經聲明過的,否則會導致編譯錯誤。
3. 常量的數據類型只可以是布爾型、數字型(整數型、浮點型和複數)和字符串型。
1. 常量聲明:const b string = "abc"
2. iota,特殊常量
const (
a = iota
b
c
)
1. 代表連續的,無類型的整數常量,
2. 以const開始的常量聲明語句為單位,
3. 從0開始,每賦給一個常量就遞增一次
4. 運算符
1. 算術運算符,a + b ,包括(+,-,*,/,%,++,--)
2. 關係運算符,返回True或False ,a == b ,包括(==,!=,>,=,<=)
3. 邏輯運算符,返回True或False ,包括(&&,||,!)
4. 地址運算符
& : 返回變量存儲地址 (&originalValue)
* :指針變量 (*pointerValue)
5. 接收運算符,用於接收通道的數據或者給將數據加入通道(intChan
5. 錯誤處理
1. error 接口,(errors.New(value),fmt.Error(),自定義錯誤類型)
<code>func Divide(a, b float64) (result float64, err error) {
if b == 0 {
result = 0.0
err = errors.New("runtime error: divide by zero")
return
} else {
result = a / b
err = nil
}
return
}/<code>
2. panic 函數,panic(value) 與error 接口聯用,
<code> var user = os.Getenv("USER")
if user == "" {
panic("The USER environment variable is not set.")
}/<code>
3. recover 函數,與defer語句聯用,
<code>func TestB() (err error) {
defer func() { //在發生異常時,設置恢復
if x := recover(); x != nil {
err = fmt.Errorf("internal error: %v", x)
}
}()
panic("func TestB(): panic")
}/<code>
6. Go 基本命令
go build 命令主要是用於測試編譯。在包的編譯過程中,若有必要,會同時編譯與之相關聯的包。
<code> go run hello.go /<code>
go get 命令主要是用來動態獲取遠程代碼包的。
<code> go get github.com/go-sql-driver/mysql /<code>
go run 命令主要用於編譯並運行Go程序。
<code> go run hello.go /<code>
go test 命令,會自動讀取源碼目錄下面名為*_test.go的文件,生成並運行測試用的可執行文件。
最後
總結一下,。後面我會詳細的介紹golang的語法。
閱讀更多 章為忠學架構 的文章