Go語言入門(2)Go語言基礎
阿新 • • 發佈:2018-12-26
1. 基礎資料型別
- 數字型別: 整型 int 和浮點型 float32、float64,Go 語言支援整型和浮點型數字,並且原生支援複數
- 布林型: true、false
- 派生型別:
(a) 指標型別(Pointer)
(b) 陣列型別
© 結構化型別(struct)
(d) Channel 型別
(e) 函式型別
(f) 切片型別
(g) 介面型別(interface)
(h) Map 型別
2. 基礎語法
2.1 迴圈
go語言裡面沒有while,所以實現迴圈都是使用for
無限迴圈
for {
}
條件迴圈
for i:=0; i <10 ; i++{
}
2.2 判斷
跟其他語言一樣,判斷有大於(>) 、小於(<) 、等於(==)、不等於(!=)、大於等於(>=)、小於等於(<=)
if i>10 {
}
3.3 選擇
switch a {
case 1: fmt.Println("a為1")
case 2: fmt.Println("a為2")
default:
fmt.Println("a不確定")
}
3. 基本語法
3.1 定義常量、全域性變數、區域性變數
定義常量使用 const
關鍵字
const a int = 1 //必須要賦初值
全域性變數,全域性變數是在函式外定義並且必須要有var
關鍵字
var b int = 10 //可以不用賦初值
區域性變數,也就是在函式中定義的變數,可以省略 var
關鍵字
var c int = 1 //最保守的寫法
var c = 1 // 省略型別,讓編譯器自己判斷
c := 1 //省略var關鍵字和型別,比較方便
注意:在go中 _
這個小下劃線被稱為廢棄數,如果某個值賦值給它則此值就被廢棄不再使用了
3.2 定義陣列、切片、map
- 定義陣列,
// 定義了一個大小為10的陣列
var ids [10]int // 初始全為 0
- 定義切片
//切片與陣列最大的不同就是,切片是變長的,它的容量可以自動擴充
var splice = make([]int,3) // 指定切片大小
var splice = make([]int,3,10) // 指定切片大小和容量
len 是這個切片初始化時的大小
cap 是這個切片的容量,當len大於cap時,此切片就會擴容,擴容為此時的cap的2倍
- 定義 map
// 定義一個map,key為string型別,value為int型別
var m = make(map[string]int)
// 使用
m["age"] = 18
3.3 定義派生型別
- 定義結構體,也就是java中的bean物件
type person struct{
id int
name string
age int
}
- 定義介面
type Ising interface {
sing()
}
- 實現介面
go語言中只要一個實體實現了介面中的所有方法,那麼這個實體就是實現了這個介面
type person struct {
string name
}
// 讓person 實現 Ising 介面
func (p *person) sing(){
fmt.Println(p.name+"在唱歌")
}
// 使用
p := new(person)
p.name = "pibigstar"
p.sing()
4. 異常
4.1 異常處理
go語言中一般都是把錯誤當成返回值給呼叫的函式
func test(name string)(int,error){
if string=="" {
return 0,eroors.New("name cannot is null")
}else {
return m[name],nil
}
}
4.2 中斷程式
當呼叫panic() 函式,該出錯執行緒就會停止,而有的時候我們不想讓它停止,我們可以 使用recover() 來恢復它
// 不讓執行緒終止
defer func() {
if r :=recover(); r!=nil{
log.Println("hava a error")
}
}()
panic(err)
4.3 defer 函式
這個函式有點類似於java中的finally,都是在函式執行返回值之前做一些操作,一般都是執行一些關閉流的操作
defer reader.close()