GO基礎知識分享2

2022-08-21 17:36:14 字數 3909 閱讀 1496

目錄兵長:胖sir,咋還在看基礎知識嘞?你以前可不是這樣的哦

胖sir:切,我今天看的和之前的可不一樣

兵長:有啥不一樣的,你能給我說出花來嘛

胖sir:小樣,你自己好好看看

兵長:看看就看看

交換2個數字的值

i := 10

j := 20

i , j = j, i

t := 3 + 5i

fmt.println(t) //(3+5i)

fmt.printf("type == %t", t)//type == complex128

var tmp int

fmt.scanf("%d", &tmp)

fmt.println("tmp == ", tmp) //tmp == 1

var tmp2 int

fmt.scan(&tmp2)

fmt.printf("type == %t", tmp2)//type == int

bool型別不能與int型別互相轉化

type long int64

var a long

a = 2

fmt.printf("type == %t", a) //type == main.long

case後面不需要寫break; 預設就有該功能

num := 2

switch num

fallthrough -- 不跳出switch語句,後面無條件執行

num := 2

switch num

switch 後面可以不用寫 條件,case 後面可以寫條件

score := 90

switch

func getname(args ...string) 

}}func test(args ...string)

func main()

可以設定函式型別

func add(a, b int) int 

type universal func(int, int) int

func main()

通過**函式實現多型

func add(a, b int) int 

type universal func(int, int) int

func cal(uni universal, a int, b int) int

func main()

golang中,所有的匿名函式都是閉包1、匿名函式

2、定義匿名函式的時候直接呼叫

3、定義匿名函式有引數有返回值

name := "qqq"

age := 24

//1、匿名函式

f1 := func()

f1()

//2、定義匿名函式的時候直接呼叫

func(hobby string) ("basketball")

//3、定義匿名函式有引數有返回值

f3 := func(a, b int) int

fmt.println(f3(1, 3))

res := func(a, b int) int (3, 8)

fmt.println(res)

閉包的特點1、閉包的特點1,可以捕獲變數,且是以引用的方式捕獲的

2、必要的特點2 ,閉包裡面使用的變數,只要閉包還在使用,則一直有效,哪怕超出該變數的作用域

func cal() func() int 

}func main() ()

fmt.printf("外部 : a == %d, name == %s\n", a, name)

//2、必要的特點2 ,閉包裡面使用的變數,只要閉包還在使用,則一直有效,哪怕超出該變數的作用域

f := cal()

fmt.println(f())

fmt.println(f())

fmt.println(f())

fmt.println(f())

}

defer的使用使用方式類似於棧,先進後出

//延遲呼叫,main函式結束前進行呼叫

fmt.println("hello")

defer fmt.println("over!!")

fmt.println("world")

//hello

//world

//over!!

//多個defer的執行順序,類似於棧的方式,先進後出,哪怕中間出現程式錯誤,defer修飾的語句仍然會執行

for i := 0; i < 10; i++

--------------------------------------------

defer fmt.println("aaaa")

defer fmt.println("bbb")

defer fmt.println("ccc")

// ccc

// bbb

// aaaa

defer 和匿名函式的使用

// a := 10

// b := 20

// defer func() ()

// a = 1

// b = 2

// fmt.printf("externer a == %d, b == %d\n", a, b)

// externer a == 1, b == 2

// inner a == 1, b == 2

a := 10

b := 20

defer func(a, b int) (a, b) //此處引數 a=10 b=20的參與已經傳入到函式中了,只是匿名函式最後執行而已

a = 1

b = 2

fmt.printf("externer a == %d, b == %d\n", a, b)

// externer a == 1, b == 2

// inner a == 10, b == 20

每乙個包 預設都會有乙個init函式,也可以自己寫乙個init函式

每呼叫乙個包,程式會先執行這個包的init函式

技術是開放的,我們的心態,更應是開放的。擁抱變化,向陽而生,努力向前行。

Go語言基礎知識點分享

最近在加深對go語言基礎知識學習,鞏固下基礎,同時分享給朋友們 go中單元測試 go 中給我們提供乙個包 testing,go 為我們提供一些很好的功能,我們可以在不需要太多學習的情況下使用它們。若要在 go 中開始使用測試,首先需要定義要測試的包。如果還沒有,請建立乙個名為 testing101 ...

Go基礎知識

1.func main 是程式開始執行的函式。main函式是每乙個可執行程式所必須包含的,一般來說都是在啟動後第乙個執行的函式 如果有init 函式則會先執行該函式 2.當識別符號 包括敞亮 變數 型別 函式名 結構欄位等 以乙個大寫字母開頭,那麼使用這種形式的識別符號的物件就可以被外部包的 所使用...

介面基礎知識分享

一 介面的定義 type 介面名 inte ce 二 介面的形象例子 現實生活中usb介面就是乙個形象的介面例子,例如手機 相機 u盤這些按照統一規格設計usb在插頭,插入usb介面後有不同的反應 package main import fmt type usb inte ce type compu...