天天看點

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P1 為什麼要學習go

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言設計之初就考慮到多核CPU了,編譯好執行,有幾個核就跑滿幾個核

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

etcd代替zookeeper

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P2 課上所有物料介紹

typora的筆記裡偏好設定,圖檔到目前的.assets檔案夾

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

預習的地方

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P3 安裝GO開發環境

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

安裝到顯眼的目錄

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

出現提示就說明安裝成功了

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P4配置GOPATH

GO是編譯型語言,有很多依賴需要編譯進去,就需要配置一個工作區,workspace的概念。就是把所有源代碼寫到這個目錄下面。

GOPATH是一個環境變量,表明你寫的項目的存放路徑,也就是工作目錄。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

這個目錄當成是今後作為源代碼開發的工作目錄

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

建立一個系統變量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

現在在windows上會有一個預設路徑。需要更新一下

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

在GOpatch下建立三個目錄,所有源代碼放在src下,用于編譯的包放在pkg,可執行檔案在bin下

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

把這個bin加到PATH變量裡去

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以go env檢視變量。

go root是安裝go.exe檔案所在的目錄

go path是代碼的位置

go arch平台的意思

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P5 GO目錄項目目錄結構介紹

下面是适合個人的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go的第三方包,一般是用域名,因為域名是唯一的。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以寫個自己的域名 ,通常一般用github上的域名

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

寫使用者名

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

企業裡 一般是這麼用,公司内部一般會有代碼托管的網址+什麼組+每個組的具體項目

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

也可以這麼寫

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P6 安裝VSCode編輯器

推薦vscode,goland收費

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

先安裝一個中文插件

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

安裝一個go插件

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P7 編寫第一個Go語言程式

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

vscode不會自動儲存,需要設定一下auto save

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

編寫代碼的是會有一些彈窗,一些自動補全的插件,可以直接install all

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

會安裝到gopath下的bin目錄

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

如果因為網絡失敗,可以下載下傳現成的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

如何去編譯

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

windows平台的可執行檔案就是exe

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

如果想在其他路徑編譯,隻能加src往後的路徑

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

這個時候,在哪裡執行的指令,就在哪裡生成exe檔案

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以指定編譯出來的檔案名

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go run相當于執行一個腳本檔案

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go install相當于2部事情,先執行go build,然後會把生成的二進制檔案拷貝到gopath的bin目錄

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

跨平台編譯,windows平台編譯一個linux平台 的檔案

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

編譯出來 了linux平台的程式

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P8 變量申明

所有的.go檔案都需要package申明,說明這個檔案屬于哪個包,如果代碼在main包,相當于你的代碼最終會編譯成可執行檔案,想要編譯就一定要func main函數,程式的入口,main函數沒有參數也沒有傳回值,語句隻能放到函數裡,不能像python一樣随便寫

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言是靜态類型語言,定義的時候一定要說明類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

批量聲明

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言中變量聲明了就必須使用到,否則編譯不過

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go有自己的format工具 go fmt

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言推薦小駝峰命名變量,下面綠色的線代表不怎麼規範

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

幾個print的差别,沒有換行

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P9 變量指派

全局變量可以聲明了不使用,因為可能别的代碼裡會使用,但是在main裡聲明的就必須使用,否則編譯不過去

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

聲明變量的同時進行指派,綠色代表不怎麼推薦,因為有類型推導

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

類型推導

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

簡短變量聲明,就隻能在函數裡使用

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

**有些變量不想要的時候可以指派給_下劃線 **

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

同一個作用域不能聲明兩個一樣的變量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P10 常量和iota

常量是在程式運作過程中,恒定不變的量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

還可以批量聲明,如果批量申明常量沒有寫值,某一行沒有寫等号,預設就和上一行一緻

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

iota是go裡的常量計數器,隻能在常量的表達式中使用。

iota在const關鍵字出現的時候将被重置為0.const中每新增一行常量聲明将使iota加一次

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

iota可以實作一個枚舉

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

答應你0,1,3

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

插隊聲明

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

每新增一行iota+1

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

1左移10位,相當于1的10次方=1024,往左移20位,1的20次方,1024kb=1mb

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P11 整形

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

整形分,帶符号的整數和無符号的整數,u開頭的都是無符号的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

特殊整形,uintptr一般用來存 記憶體位址,

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言無法直接定義二進制數,0開頭是8進制數,0x開頭是16進制數

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

%d表示用10進制數來代替

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

八進制數077轉成10進制就是63

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

16進制數是0到f,%o八進制,%x16進制,%b二進制數

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

通常給檔案設定權限會用到8進制

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

聲明一個int8類型的變量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P12 浮點型和布爾值

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

const常量float32最大值是後面那麼多

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go裡面浮點數本來就是不精确的,推薦就是64

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

強制定義32位的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

但是不同類型的變量是不能夠直接指派

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

布爾值預設是false

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

%v,不管什麼值都可以打出來

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

fmt總結5

%T檢視類型,%v檢視值,b二進制,d10進制,o8進制,x16進制,s字元串

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

加一個井号會代表描述符

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P14 字元串操作

go裡的字元串隻能用雙引号

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

字元串在go裡隻能用雙引号

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

列印反斜線

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

多行的字元串

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

反引号裡的是原樣輸出,之前字元串的轉義符就可以不使用了

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

拼接字元串

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

分割

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

是否包含

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

前字尾

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

字串出現的位置

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

b最後出現的位置

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

拼接

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P15 字元串修改和類型轉換

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

列印成字元

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

abc一個英文字元稱為byte,中文和其他語言位rune類型,rune類型就是一個類型的别名

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

rune類型代表utf-8類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

字元串不能修改,要能修改隻是轉換成另外一種類型的變量,:=相當于重新指派,雙引号代表字元串,單引号代表字元。切片裡儲存的就是字元。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

hello如果是字元串類型,分解下來裡面有5個字元,go語言裡單引号代表字元

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

看看單引号和雙引号的差別,rune類型其實是int32類型的别名,一個中文占3個位元組,一個位元組占8bit,3*8=24,為什麼是int32,因為utf-8有字首

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以把值列印出來

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

雙引号就是字元串,單引号就是字元,英文來說,用ascii碼表的就能表示,隻占1個位元組,如果對應中文,需要3個bytes,也可以強制轉換成byte,實際上就是uint8

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

布爾類型不能和其他類型互相轉換

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

int轉float,隻有整形和浮點型可以轉換,還有字元串和切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P16 if判斷和for循環

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

多個if判斷

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

這樣聲明的age變量隻在if條件判斷裡

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

初始值可以被省略掉

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

初始語句和結束語句都可以省略掉

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

死循環

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

鍵值循環,專門用來周遊數組,切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

索引和字元

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P17 内容回顧

GOpath就是寫go代碼的工作區

goroot是你安裝go.exe的執行檔案

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go在函數外面,隻能寫關鍵字開頭

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

函數内部定義的變量,必須使用

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

死循環

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以求字元串長度

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

%d 數字,%c字元

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

直接列印一個變量是索引

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

無符号代表的數字範圍大一些,正負數

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

不同類型的float也不能比較

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

byte是int8 ,rune是int32

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

字元串都使用utf-8編碼,rune類型就是int32,要用4個位元組存儲

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

二進制數在go裡是不可以直接定義的。0開頭是8進制,0x開頭是16進制

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以格式化列印,%o8進制,%x16進制

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P18 switch和goto

for循環裡使用break跳出循環

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

跳出某一次循環

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

大量判斷可以使用switch,簡化變量和具體的值做比較

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

現在就整個跳出了

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P19 運算符

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go裡面 ++和–代表單獨的語句,語句不能放在等号右邊作為指派

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

按位與,按位或

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

異或,兩位不一樣是1

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

左移

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

右移

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

位與可以在計算ip和權限

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P20 數組

go裡的數組類似清單,但是要定義長度和裡面的資料類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

長度為3的數組,類型是bool

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

長度是數組的類型一部分

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

類型是長度3布爾型的數組,也就是長度是類型 的一部分

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

如果不初始化,預設元素就是0值,布爾值就是false,整型和浮點型就是0,字元串就是空

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

初始化的幾種方式

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

還可以用指定索引的方式

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

根據索引的方式,周遊數組

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

長度為3,每個元素裡都是長度為2的int類型的數組

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

多元數組的周遊

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P21 數組練習題

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P22 切片1

數組的長度是固定的,是申明的一部分

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片定義好了就初始化

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

nil相當于空,在go裡代表沒有開辟記憶體空間

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

之前是自己定義切片,然後做初始化。由一個已經存在的數組做切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

一些自定義的切片方式

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片的容量是底層數組的容量,底層的數組動第一個元素到最後元素的數量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

第二章是容量是從切片的第一個元素到最後一個元素

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片指向了一個底層的數組,切片的程度就是它元素的個數。

切片的容量是底層數組從切片的第一個元素到最後一個元素的數量。

支援擴容

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

之前自己定義的切片,其實底層是一個對應長度的數組,然後把數組封裝一下傳回

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片再切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

3開始隻有13這個元素,是以長度是1,容量也是1

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片是一個引用類型,都指向了一個底層的數組,數組變了,切片就變了

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P23 切片的本質

make函數是用來建立切片的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

5個元素全是0的切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

傳兩個值就是,長度5,容量也是5

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

長度為0,容量為10的切片

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片 就是一個框,框住了一塊連續的記憶體,go比較偏底層,是以就是隻能儲存一些相同類型的元素,其他語言設計的時候已經給你實作了一片記憶體存不同類型的資料

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片隻能和nil值比較,nil值代表切片沒有底層數組

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

nil也就是相當于你建立了兩個切片,但是底層數組還不知道

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

判斷切片一定要用len去判斷是否是空的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片支援索引周遊和range周遊

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

vscode可以設定變量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

選擇go

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

輸入prefix裡的東西,會把body裡的内容輸出到文本裡

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P24 append和copy

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

調用append函數,必須使用原來切片的變量接收傳回值。

切片底層的數組是不變的,容量改變了,隻能說明指向了另外的數組。是以append追加的時候,原來的底層數組放不下的時候,Go就會把底層數組換一個

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

源碼位置

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

append,擴容的政策就是首先判斷,新申請容量大于2倍的舊容量,最終容量就是新申請 容量,否則判斷,如果舊切片小于1024,最終容量就是舊容量的2倍。

如果舊切片大于1024,就是循環累加容量,一次加1/4。

如果存的是int和string處理的方式還不一樣。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

ss…三個點代表拆開

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

修改值,copy相當于把a1的值都拿出來放到另外的地方。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go語言裡沒有删除切片元素的專用犯法

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

切片是不存值的,底層數組才是存值的,是以容量還是3

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

現成的一個數組,長度2,容量3

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

x1是數組,s1是指向x1的切片,

s1 = append(s1[:1],s1[2:]…),把x1第0個元素,和最後一個拼接在一起,相當于5往前移一位

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

因為數組對應一塊連續的記憶體,是以原來3也就是變成了5

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

其實make 5 的時候,長度5就已經初始化為5個元素在裡面了,追加就往後去追加

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

容量擴容後就是20

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P25 append再補充

s1[0:1]左閉右開

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

相當于框出來的往前移一格

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P26 指針和make及new

指針是int類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

*根據位址取值,int星号int代表int類型的指針

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

**a是一個int類型的值,指向一個記憶體位址

b是一個指針,b存的值就是a的記憶體位址

b也有一個記憶體位址就是&b

**

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

對變量進行取址&操作,可以獲得這個變量的指針變量

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

new和make都是用來創造指針的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

無效的記憶體位址,a這個變量其實是空的指針

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

用 new 來申請一個記憶體位址,有了記憶體位址才能指派

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

make也是用來配置設定記憶體的,差別于new,隻用于slice、map以及chan類型的記憶體建立。

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go的指針隻要認識到一個英文的取址符号&,一個根據位址求值的符号。*

P27 map

map在go裡表示映射關系

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

申明後一定要初始化,否則沒有開辟記憶體空間

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

預估一個map的容量,避免運作中動态擴容

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

一般約定一個ok來接收布爾值

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

如果不存在這個key,就拿到對應類型的0值

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

for range 周遊map

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

删除key,如果删除不存在的,也就是什麼都不幹

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

檢視go的delete函數

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可以在這個網站上檢視幫助

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

rand.seed随機數,time.now()目前的時間,

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

先列印上面的

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

要想排序,先把所有的key拿出來放到切片裡去,對切片做一個排序,周遊切片,從map裡找對應key的值,這樣就能實作一個有順序的周遊

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

map和切片類型做一個組合,做一個更複雜的資料類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

make做一個切片,切片類型是map,長度為0,切片裡就沒有元素,就不是0

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

改成1試試

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

長度0的時候,裡面沒元素,報index out of range,長度為1的時候,map沒有初始化

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

需要對map做初始化,切片和map都需要做初始化

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

值為切片類型的map

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

前提是一個map

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

P28 函數

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

函數是一段代碼的封裝

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

參數跨域匿名也可以不匿名,傳回值的名字可以在函數内部直接使用,命名傳回值相當于在函數中申明一個周遊,相當于在函數内部已經申明了一個周遊叫ret

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

上面的沒有有命名傳回值就一定要顯式傳回,下面使用了命名傳回值就可以不寫return ret,因為不寫也知道return ret

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

傳回值可以有多個

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

參數可以簡寫,兩個參數如果都是int,類型一緻,可以将前面參數的類型省略

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

可變長參數,y …int,代表y可以傳多個值,都是int類型

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new

go函數沒有預設參數概念

2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new
2021/07/11 老男孩帶你21周搞定Go語言 (一)P26 指針和make及new