真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go基礎(chǔ)知識梳理(二)

Go基礎(chǔ)知識梳理(二)

簡單函數(shù)的定義

//有參數(shù)有返回值
func sum(a int, b int) int {
    return a + b
}
//無返回值
func sum(a int, b int) {}
//無參數(shù)無返回值
func sum(){}
//返回多個值
func sum(a int, b int) (int, error) {
    return a+b, nil
}
//參數(shù)簡寫(類型相同)
func sum(a, b int) int {
    return a + b
}

匿名函數(shù)的定義

func main() {
    //定義一個匿名函數(shù)sum
    sum := func(a, b int) int {
        return a + b
    }
    
    res := sum(1 + 2)
    fmt.Println(res) // 3
}

defer關(guān)鍵字

//defer 語句會在return后執(zhí)行,并且是棧原理,先注冊就先入棧,最后執(zhí)行

func main() {
	print := func(a string) {
		fmt.Println(a)
	}
	defer print("First")
	defer print("Second")

	return
}
打印結(jié)果
Second
First

func main() {
    a := 0
    print := func(a int) {
    	fmt.Println(a)
    }
    defer print(a)
    a += 1
}
打印結(jié)果
0 //因?yàn)閐efer語句先注冊,已經(jīng)獲取到了該變量的副本

//另一種情況
func main() {
	a := 0
	print := func(a *int) {
		fmt.Println(*a)
	}
	defer print(&a)
	a += 1

	return
}
打印結(jié)果
1 //因?yàn)楂@取到的是a變量的內(nèi)存地址

Error錯誤

//在多個返回值的函數(shù)中,error通常放在最后一位進(jìn)行返回
func sum(a, b int) (int, error) {
   return a + b, errors.New("fail")
}
//對于處理有err返回的,應(yīng)先用if處理
func main() {
   a := "1"
   b, err := strconv.Atoi(a)
   if err != nil {
       return
   }
   fmt.Println(b)
}
//defer 吾句應(yīng)該放到四判斷的后面,不然有可能產(chǎn)生 panic
//正確寫法
func sql() {
   SQL := "SELECT * FROM test"
   stmt, err := self.Conn.Prepare(SQL)
   if err != nil {
   	logger.Logln(logger.ERROR, err)
   	return false
   }
   defer stmt.Close()
}
//錯誤寫法
func sql() {
   SQL := "SELECT * FROM test"
   stmt, err := self.Conn.Prepare(SQL)
   defer stmt.Close() //updated
   if err != nil {
   	logger.Logln(logger.ERROR, err)
   	return false
   }
   //defer stmt.Close()
}

當(dāng)前文章:Go基礎(chǔ)知識梳理(二)
網(wǎng)頁URL:http://weahome.cn/article/dsoisjs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部