天天看點

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P44 概要

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P45 回顧

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

函數當成參數傳進去,這個函數類型是接收string類型參數的函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)

函數内部無法申明帶名字的函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)

這就是它的類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

閉包有特殊場景,A開發了函數,這個函數需要傳函數變量,類似下面的

2021/8/12 老男孩帶你21周搞定Go語言 (三)

比如把函數傳到low裡,但是現在是類型不比對的,因為yuanshuai函數要接收一個string參數

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

包一下傳到low裡

2021/8/12 老男孩帶你21周搞定Go語言 (三)

bi的傳回值是個函數,fc這個函數,沒有參數沒有傳回值給了low,這樣就實作,本來元帥不能傳給low,利用bi包一下傳給了low

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

defer是延遲調用,多用于處理資源的釋放

2021/8/12 老男孩帶你21周搞定Go語言 (三)

panic是抛出讓程式崩潰的錯誤的,但是如果占用了一些資源沒釋放,就需要recover嘗試恢複,做一些資源的釋放

2021/8/12 老男孩帶你21周搞定Go語言 (三)

defer延遲調用,f1即将return的時候才執行,到了panic要退出了,執行defer,調用recover,把錯誤收拾收拾,列印“松手去愛”,列印err,f1就結束了,實作友好退出,然後執行f2

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P46 分金币

2021/8/12 老男孩帶你21周搞定Go語言 (三)

main函數一般放一些最簡單的代碼

2021/8/12 老男孩帶你21周搞定Go語言 (三)

map需要make做初始化,slice也需要.

需要先周遊人民,把每個字母取出來,’'單引号代表字元,根據條件加金币

2021/8/12 老男孩帶你21周搞定Go語言 (三)

金币要減少

2021/8/12 老男孩帶你21周搞定Go語言 (三)

需要return一個金币數

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

這就是一個map

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P47 遞歸

說白了就是函數調用自己,比如打開一個檔案夾,進入,再打開裡面的檔案夾,進入,再打開

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

遞歸一定要确定退出條件,不然是死循環,遞歸适合處理問題相同,規模越來越小的場景

2021/8/12 老男孩帶你21周搞定Go語言 (三)

其實就是走到最後,剩1個台階有幾種走法,剩2個台階有幾種走法,兩個加起來就是總的種

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P48 自定義類型和類型别名

go語言是強類型,但是可以基于基本類型建立新的類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)

自定義類型有時候會用到,

type myint int是自定義類型,帶=是類型别名

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

中的字元編碼是20013,rune是int32的類型别名

2021/8/12 老男孩帶你21周搞定Go語言 (三)

類型别名,是為了讓寫代碼的時候,更加清晰知道代碼是做什麼用的

2021/8/12 老男孩帶你21周搞定Go語言 (三)

rune是int32的别名

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

差別是,自定義類型在編譯完後還是自定義類型,但如果是類型别名就還是原來的類型。

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P49 結構體初識

比如一個人有很多元度的資訊,身高,體重,就需要自定義這樣一個類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體會把每個變量對應的值依次列印出來

2021/8/12 老男孩帶你21周搞定Go語言 (三)

類型的分類是i結構體,類型是person

2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體是為了表示多元度的個體

2021/8/12 老男孩帶你21周搞定Go語言 (三)

某個變量不指派的時候就是0值,string的0值就是空字元串,切片就是空的slice

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P50 匿名結構體

在一個包裡,定義的類型名是不能重複的。

字段名必須唯一。

字段類型:結構體字段的類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名結構體适合臨時使用

2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體是值類型的,就是ctrl c 和ctrl v

P51 結構體指針和結構體初始化

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

go裡的傳參全是ctrl c和ctrl v的,改的也是副本,要想改原來的,隻能傳記憶體 位址,指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

x 設定為person的指針,&p 記憶體位址

2021/8/12 老男孩帶你21周搞定Go語言 (三)

根據記憶體位址找到原變量,修改的就是原來的變量,函數内部修改變量,就要使用指針了

2021/8/12 老男孩帶你21周搞定Go語言 (三)

go語言有文法糖,go裡是不允許修改指針,x會去自己判斷,然後去修改指針對應的變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

new(int string bool )和make都是用來申請記憶體的,new傳回的是對應類型的指針。

make是用來給特定類型開辟記憶體的,slice,map,channel,傳回的就是對應類型。

2021/8/12 老男孩帶你21周搞定Go語言 (三)

var p2 =new(person) 傳回的p2就是對應類型的指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

指針類型的值表示的是一個記憶體 位址

2021/8/12 老男孩帶你21周搞定Go語言 (三)

%p 拿的是變量的指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

一個是int類型,一個是int類型指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

&a 把a的記憶體位址取出來,%p可以列印出來16進制的格式,b也是等于a的記憶體位址,但是這裡列印的b其實是b的值,b的記憶體位址并不一樣

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

p2 是一個person類型的指針,&p2這樣才是p2變量的位址

2021/8/12 老男孩帶你21周搞定Go語言 (三)

p2儲存到值就是一個記憶體 位址,本身作為變量,也有一個記憶體 位址

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

*p2.name其實是文法糖,其實是(p2)

2021/8/12 老男孩帶你21周搞定Go語言 (三)

聲明變量類型,并同時初始化,key 和value做初始化

2021/8/12 老男孩帶你21周搞定Go語言 (三)

清單初始化,考慮 到值的順序

2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體初始化有兩種方式,值和清單的方式,一種是清單的方式,&取指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體裡的字段其實是連在一起的,一個結構體占用的記憶體是一塊連續的記憶體

2021/8/12 老男孩帶你21周搞定Go語言 (三)

取一下記憶體位址

2021/8/12 老男孩帶你21周搞定Go語言 (三)

c字段類型和上面不一樣,為了查的更快,有一個記憶體對齊,是以不是421而是428

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

類型一樣,就是連續下去,沒有用到記憶體對齊

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P52 結構體和初始化

可以模拟其他語言,構造函數傳回一個結構體變量的函數,go語言可以面向對象,但是理念是面向接口程式設計

2021/8/12 老男孩帶你21周搞定Go語言 (三)

直接定義的結構體都是var聲明的

2021/8/12 老男孩帶你21周搞定Go語言 (三)

這樣的好處就是想要拿到一個結構體,直接調用這個函數就可以了。

2021/8/12 老男孩帶你21周搞定Go語言 (三)

現在就是使用一個構造函數去建立一個person變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

**當結構體比較小,直接拷貝,消耗不大,可以用person,如果結構體比較大,盡量傳回使用指針類型,指針始終是一個int64這樣一個值。

也就是結構體比較大的時候盡量 使用結構體指針,減少程式的記憶體開銷。

go語言的構造函數,約定是new開頭

**

2021/8/12 老男孩帶你21周搞定Go語言 (三)

新造一個dog函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)

構造函數用new開頭,變量是什麼類型,就是傳回什麼類型,dog,就傳回dog類型,或者dog指針。

注意結構體大小,什麼時候用指針,什麼時候用值

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P53 方法和接收者

方法其實一種函數,是特殊的函數,作用于特定的變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

方法是作用于特定類型的函數,dog是類型,d代表形參,表示dog類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)

d是個接收者,一般用變量的首字母,多用類型名首字母小寫表示,類似pthon的self,前端的this

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

構造函數是一個,方法是一個

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P54 值接收者和指針接收者的差別

辨別符:變量名,函數名,類型名,方法名,這些首字母大寫,表示對外部可見,也就是公有的,就比如fmt包裡,Print一定是大寫,不然在外部無法通路調用

2021/8/12 老男孩帶你21周搞定Go語言 (三)

記得要寫注釋

2021/8/12 老男孩帶你21周搞定Go語言 (三)

方法多了,接收者,參數,傳回值

2021/8/12 老男孩帶你21周搞定Go語言 (三)

要申明方法就必須指定接收者,接收者就是一個具體的類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

接收者分為指針接收者和值接收者

2021/8/12 老男孩帶你21周搞定Go語言 (三)

接收者為值類型,傳過來的時候把p1拷貝了一份給p,是以修改的不是一個age,就還是列印18

2021/8/12 老男孩帶你21周搞定Go語言 (三)

要想修改原來的age,就需要用到接收者為指針類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)

兩者的接收者不一樣

2021/8/12 老男孩帶你21周搞定Go語言 (三)

什麼時候需要用到指針類型的接收者

1.需要修改接收者的值的時候。

2.接收者是拷貝代價比較大的對象,結構體消耗比較大

3.保持一緻性,别的方法用了指針接收者,那其他的方法也應該使用

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

比如給int類型加一個hello方法,自己創個類型為myint,間接給int類型造了一個hello方法。

不能給其他包裡面的 類型添加方法,隻能在自己的包裡的類型添加方法

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P55 那些你遇到的問題

go預設聲明是int,現在是int32

2021/8/12 老男孩帶你21周搞定Go語言 (三)

三種聲明int32類型的變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

聲明一個myint變量m,值是 100

2021/8/12 老男孩帶你21周搞定Go語言 (三)

問題2:結構體初始化

2021/8/12 老男孩帶你21周搞定Go語言 (三)

聲明這個變量的時候同時完成初始化

2021/8/12 老男孩帶你21周搞定Go語言 (三)

一個是鍵值對,一個是值清單

2021/8/12 老男孩帶你21周搞定Go語言 (三)

問題3:為什麼要有構造函數

别人調用自己,自己給它一個person類型的變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P56 函數版學生管理系統

**1.登入系統列印菜單

2.等待使用者選擇要做什麼

3.執行列印對應的函數

**

2021/8/12 老男孩帶你21周搞定Go語言 (三)

掃描使用者的輸入

2021/8/12 老男孩帶你21周搞定Go語言 (三)

擷取輸入,選擇執行什麼

2021/8/12 老男孩帶你21周搞定Go語言 (三)

定義功能函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

實作上面的三個函數,

student的類型變量位址,student需要做初始化

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

把所有學生列印

2021/8/12 老男孩帶你21周搞定Go語言 (三)

add學生,建立一個學生,追加到allstudent這個map裡

2021/8/12 老男孩帶你21周搞定Go語言 (三)

造學生需要一個構造函數,傳回指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

删除學生,輸入學生号,删除對應的鍵值對

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P57 結構體的匿名字段結構體嵌套等

匿名字段就是沒有名字的字段

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名字段不是很常用

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

把另外一個結構體嵌套在自己内部

2021/8/12 老男孩帶你21周搞定Go語言 (三)

造一個person類型的變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

拿到姓名和居住的城市

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名嵌套,就是嵌套的時候沒有名字

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名其實就是這樣寫的

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名的好處就是可以直接p1.city,省略了中間的address,通路字段友善一點

2021/8/12 老男孩帶你21周搞定Go語言 (三)

但是兩個嵌套進去了,有同名的字段,p1.city查找city這個字段是現在自己的結構體裡找,找不到就去匿名嵌套的結構體裡去找,現在這樣的情況,就隻能寫全調用的字段了

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P58 結構體模拟實作繼承

2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體模拟實作其他語言裡的繼承

2021/8/12 老男孩帶你21周搞定Go語言 (三)

d.name查找的時候會去找結構體的再去找匿名的

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

dog結構體把animal結構體包起來了,animal有的方法,dog也有,變相實作了繼承

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P59 結構體和JSON

json是最先在js裡表現對象的一種模式

2021/8/12 老男孩帶你21周搞定Go語言 (三)

把go裡結構體轉程json,json轉成go裡的結構體

2021/8/12 老男孩帶你21周搞定Go語言 (三)

是一個字元串,隻不過就一個{}

2021/8/12 老男孩帶你21周搞定Go語言 (三)

因為小寫開頭, 别的作用域就拿不到這個變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

為什麼要大寫,其實是在json報裡的marshal方法裡,把你p1的變量拿出來,是以要大寫,小寫拿不到變量

2021/8/12 老男孩帶你21周搞定Go語言 (三)

** 如果想要指定json解析的時候,變成什麼字段,可以在後面加json:xxx `反引号 **

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

這是一個序列化的過程,marshal,反序列化unmarshal,如果要在函數裡修改,就必須傳指針&,因為go裡面傳變量都是值拷貝

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P60 結構體内容回顧01

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

上面聲明一個結構體,下面給初始值

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名結構體

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體聲明了就需要使用,結構體需要使用{},兩種不同方式的執行個體化

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

構造函數實際上也需要new person這樣的操作

2021/8/12 老男孩帶你21周搞定Go語言 (三)

轉變一下就成了這樣,構造函數就是構造結構體變量的函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)

三種方式,哪種友善用哪種

2021/8/12 老男孩帶你21周搞定Go語言 (三)

int是傳回值的類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)

其實就是一個普通的函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

P61 結構體内容回顧02

方法其實就是有接收者的函數,接收者指的是哪個類型的變量可以調用這個函數,接收使用對應首字母小寫。指定了接收者後,隻有接收者這個類型的變量才能調用這個方法。

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

如果想要每個person的夢想不一樣,可以加參數

2021/8/12 老男孩帶你21周搞定Go語言 (三)

這樣方法就可以像函數一樣傳參數了

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

方法其實就是函數,隻不過在函數前加一個接收者這樣的概念

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體是值類型(差別是引用類型,引用類型存的是記憶體位址,值類型是拷貝,ctrl +c /v),接收者也可以是指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

對guonian進行調用,但是其實上面改的是一個副本

2021/8/12 老男孩帶你21周搞定Go語言 (三)

person類型的指針

2021/8/12 老男孩帶你21周搞定Go語言 (三)

相當于&p1.guonian

2021/8/12 老男孩帶你21周搞定Go語言 (三)

當需要在方法裡去修改結構體變量值的時候,需要用指針接收者,

2.還有當結構體比較大的時候

3.保持一緻性,一個方法使用了指針接收者,那麼其他方法也需要

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

結構體裡可以嵌套另一個結構體

2021/8/12 老男孩帶你21周搞定Go語言 (三)

匿名嵌套

2021/8/12 老男孩帶你21周搞定Go語言 (三)

json序列化和反序列化的注意點:

1.結構體内部要大寫,不大寫别人是通路不到。

2.反序列化:由字元串–》go中的結構體變量,反序列化傳的需要是指針。

byte類型的切片,就是個字元。ascii碼能表示的就是byte,error是錯誤類型

2021/8/12 老男孩帶你21周搞定Go語言 (三)

go語言的一般把錯誤當作第二個傳回值

2021/8/12 老男孩帶你21周搞定Go語言 (三)

傳回空時因為x和y都是小寫的

2021/8/12 老男孩帶你21周搞定Go語言 (三)

改成大寫

2021/8/12 老男孩帶你21周搞定Go語言 (三)

假如就想要顯示json的時候是小寫

2021/8/12 老男孩帶你21周搞定Go語言 (三)

上面的是序列化,下面是反序列化,就是把字元串轉成go的結構體變量。

這裡其實是錯誤的,這裡修改的其實是副本,列印po2就還是原來的。

2021/8/12 老男孩帶你21周搞定Go語言 (三)

傳一個指針進去

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

差別:自定義類型編譯完之後還是存在的,類型别名隻是在代碼編寫過程中存在的,編譯後就不存在

2021/8/12 老男孩帶你21周搞定Go語言 (三)

P62 結構體版學生管理系統

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

修改main入口,但是run的時候要把兩個檔案都寫進去

2021/8/12 老男孩帶你21周搞定Go語言 (三)

需要等待使用者輸入

2021/8/12 老男孩帶你21周搞定Go語言 (三)

初始化一個所有學生結構體

2021/8/12 老男孩帶你21周搞定Go語言 (三)

基本架子

2021/8/12 老男孩帶你21周搞定Go語言 (三)

拿到map可以周遊

2021/8/12 老男孩帶你21周搞定Go語言 (三)

增加學生,并把新的學生 放到map裡

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

就可以看到有一個學生添加進去了

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

修改學生

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

有沒有這個使用者就傳回key或false

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

修改學生函數

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)

要對對象進行一個更新

2021/8/12 老男孩帶你21周搞定Go語言 (三)

删除學生

2021/8/12 老男孩帶你21周搞定Go語言 (三)

使用了結構體和結構體的方法

2021/8/12 老男孩帶你21周搞定Go語言 (三)
2021/8/12 老男孩帶你21周搞定Go語言 (三)