1. 程式人生 > >Go語言入門(2)Go語言基礎

Go語言入門(2)Go語言基礎

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([]int3) // 指定切片大小
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()