藍色區塊
開始寫GO
分享自己初學GO時看的教學文章,安裝完GO環境之後,就可以撰寫自己第一支GO的程式了,網路上的系列說明很多很詳細,就不重複撰文了,以下則是自己收藏很有用的網路文章。
- 教你撰寫第一隻 Go
- 進階 go 整理教學
個人筆記整理
筆記 Go 的基本类型
bool,string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名// 表示一个 Unicode 码点
float32 float64
complex64 complex128
https://tour.go-zh.org/basics/11
匿名欄位
1 | type User struct { |
筆記 Go的參數傳遞
傳值的意思是:函式傳遞的總是原來這個東西的一個副本,一副拷貝。
- pass by value
嚴格來說,Go只有傳植方式,會複製一個新的變數,且分配新的memory位址。
pass by pointer (或稱 called by reference,但其實不是)
指標方式則會複製一個新的指標,但指向的memeory位址是一樣的,但是是兩個不同的指標。
- 通常預期參數被修改,應傳指標。
- 在go裡pass by value開銷很小
- 迷思:Map/chan等其實是指標型別,因此會被修改,是種引用型別(reference types)[不是指call by reference],仍是pass by value
出自以下參考文章:
- golang-pass-by-pointer-vs-pass-by-value
- there-is-no-pass-by-reference-in-go
- 《Golang 入門系列七》Go語言引數傳遞是傳值還是傳引用
Go語言中所有的傳參都是值傳遞(傳值),都是一個副本,一個拷貝。因為拷貝的內容有時候是非引用型別(int、string、struct等這些),這樣就在函式中就無法修改原內容資料;有的是引用型別(指標、map、slice、chan等這些),這樣就可以修改原內容資料。”
筆記 理解 Go 语言中的方法和接收者
- 值接收者,是一个副本,方法内部無法對其真正的接收者做更改;
- 指针接收者,是接收者的引用,對這個引用的修改可以影響真正的接收者。