目錄兵長:胖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...