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...