go語言學習筆記

2021-09-19 22:51:15 字數 3057 閱讀 6549

type info struct 

func main()

fmt.println(info1)

data, _ := json.marshal(info1)

fmt.println(string(data))

}

輸出:

這裡要特別注意的是:`json:"***"`(冒號後面和雙引號之間千萬不要有空格!!!!!!!!!!!!!!!!!!)被坑慘了

)go語言 import的包的前面加個字母是包的別名,加下劃線是只執行包的init,而不能引入包的任何變數或函式;

點操作的含義就是這個包匯入之後在你呼叫這個包的函式時,你可以省略字首的包名;

下面就可以用alias.***來引用包ppp裡面的東西了, 而包nnn裡面的所有可用函式和變數都可以不用帶nnn.***(),直接***()就行

package main

type videoitem struct

func (item *videoitem) testpointer()

func (item videoitem) testvalue()

func main()

v.testvalue()

fmt.println(v.groupid)

v.testpointer()

fmt.println(v.groupid)

//輸出:33

666}

傳入指標*videoitem, 如果方法中有改變這個結構體的**,則這個結構體v的相應欄位就會被改變;

1、放在函式的引數宣告中,可以接受任意個數的引數

package main

import (

"fmt"

)func test1(args ...string)

}func main()

//輸出是:

//gg

//gggf

//hghgf

2、放在陣列變數後面,表示將這個切片打散進行傳遞:

func sum(nums ...int) int 

return res

}sum(1,2,3)

//也可以這樣

primes := int

fmt.println(sum(primes...)) // 17

注意,這裡需要sum函式定義了可變長引數才行

3、放在定義陣列時的數量標識位置:

a := [3]int  // 陣列a的長度必須小於或等於3

a := [...]int //表示a的陣列長度由實際傳入的元素數量決定

4、go語言命令列的萬用字元:

描述包檔案的萬用字元。

在這個例子中,會單元測試當前目錄和所有子目錄的所有包:

go test ./...
轉義字元"\r"匹配回車符,用法如下:

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

//結果:輸出3行"pppf"

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

//結果:輸出一行"gggg"

為什麼會這樣呢?原來,\r的作用就是把這個符號後面的字元依次代替釣前面的字元

rand.seed(time.now().unix())

randnum := rand.intn(max-min)+min

//randnum就是範圍為min到max的隨機整數

go語言的字串型別string在本質上就與其他語言的字串型別不同:

即:乙個go語言字串是乙個任意位元組的常量序列

golang的雙引號和反引號都可用於表示乙個常量字串,不同在於:

而單引號則用於表示golang的乙個特殊型別:rune,類似其他語言的byte但又不完全一樣,是指:碼點字面量(unicode code point),不做任何轉義的原始內容。

在golang中,陣列指標是某個陣列的指標,而指標陣列則是裝滿指標的陣列,舉個栗子:

func main()  , }

var b *float64

b = &a

fmt.println((*b)[0][1])

}

a是乙個切片,b是乙個切片指標,它指向切片a的位址,需要用(*b)[x][y]來引用a中的資料;

下面是乙個指標切片的栗子:

func main()  , }

b := make(*float64, len(a))

for i:=0; ib是乙個指標切片,裡面每個元素都是乙個指標,指向切片a對應的元素,用*b[x][y]來訪問a中對應的元素

type user struct

結構體的屬性名字必須大寫,不然:

user := user{}

err = collection.findone(context.background(), filter).decode(&user)

fmt.printf("%+v", user)

這裡user是user的例項,傳入decode中,但是出來會列印為空,因為如果屬性名字小寫,則只能在自己的作用域內用,也就是出了decode的作用域就會廢掉

linux:

gopath="/home/www/gopath1:/home/www/gopath2"

windows:

gopath=f:/gopath1;f:/gopath2;

注意:go get 時預設安裝到第乙個gopath路徑

go build時,有時會報同一種型別或方法不匹配,由於多個是gopath路徑順序不對導致的,調換一下順序即可解決

Go語言 學習筆記

import 下劃線 如 import hello imp 的作用 當匯入乙個包時,該包下的檔案裡所有init 函式都會被執行,然而,有些時候我們並不需要把整個包都匯入進來,僅僅是是希望它執行init 函式而已。這個時候就可以使用 import 引用該包。即使用 import 包路徑 只是引用該包,...

Go語言學習筆記

一.go程式開發注意事項 go原始檔以 go 為副檔名。go應用程式的執行入口是main 函式。go語言干戈區分大小寫。go方法由一條條語句構成,每個語句後不需要分號 go語言會在每行後自動加分號 這也體現出golang的簡潔性。go編譯器是一行行進行編譯的,因此我們一行就寫一條語句,不能把多條語句...

go語言學習筆記

英文官網 中文官網 二.zip安裝配置環境變數 系統變數名 goroot 值 c go bin go的安裝位置 c go 系統變數名 path 追加值 goroot bin 三.是否正確安裝 go version 四.編譯,執行 1.編譯 go build o c test.exe c test.g...