日常學習總結golang day3 結構體

2021-10-04 11:11:35 字數 2385 閱讀 4717

1.遞迴

遞迴:函式自己呼叫自己,適合處理那種問題相同、問題規模越來越小的場景。

注意:遞迴一定要有乙個明確的退出條件,否則很容易成死迴圈。

計算n的階乘

func

f(n uint64

)uint64

return n*

f(n-1)

}func

main()

上台階問題:

n個台階,一次可以走1步,也可以走兩步,有多少種走法。(遞迴實現)

func

taijie

(n uint64

)uint64

if n ==

2return

taijie

(n-1)+

taijie

(n-2

)//最後剩下一步之前有多少種走法+最後剩下兩步之前有多少種走法

}func

main()

2.結構體

結構體指標:

結構體是值型別的,賦值的時候都是拷貝。go語言中通過struct來實現物件導向。

當結構體字段較多時,為了減少記憶體消耗可以傳遞結構體指標。

type後面跟的是型別:go語言種可以使用type關鍵字來定義自定義型別。

可以給自定義型別加方法,但是不能給包裡面的型別新增方法,只能給自己包裡的型別新增方法。

type myint int

//自定義型別:myint是一種新型別,具有int的特性

type yourint =

int//型別別名:yourint只會在**中存在,編譯完成時並不會有yourint型別;byte和rune都屬於型別別名

func

main()

n的型別是:main.myint,值為:100

m的型別是:int,值為:200

匿名結構體:多用於臨時場景。

go語言中函式傳參永遠傳的是拷貝。

指標型別結構體:

可以通過new關鍵字對結構體進行例項化。需要注意的是:在go語言中支援對結構體指標直接使用.來訪問結構體成員。使用&對結構體取位址操作相當於對該結構體型別進行了一次new例項化。沒有初始化的結構體,其成員變數都是對應其型別的零值。

使用值的列表初始化:

p :=

&person

fmt.

printf

("%#v"

,p)//&main.person

注意:

a. 必須初始化結構體的所有字段;

b. 初始值的填充順序必須與字段在結構體中的宣告順序一致。

c.該方式不能和鍵值對初始化方式混用。

方法和接收者:

a. 方法的定義格式如下:

func

(接收者變數 接收者型別)方法名(引數)

(返回引數)

b. 方法是作用於特定型別的函式

c. 接收者表示的是呼叫該方法的具體型別變數,多用型別名首字母小寫表示。

d. 接收者分為:指標型別的接收者、值型別的接收者

什麼時候應該使用指標型別接收者?

i. 需要修改接收者中的值;

ii. 接收者是拷貝代價比較大的大物件;

iii. 保證一致性,如果有某個方法使用了指標接收者,那麼其他的方法也應該使用指標接收者。

go中的建構函式:約定成俗用new開頭

type dog struct

//建構函式

func

newdog

(name string

) dog

}//方法

//接收者

func

(d dog)

run(

)func

main()

3.json

序列化:將結構體變數—>json字串。byte,err:=json.marshal(結構體變數)

反序列化:將json字串串—>結構體變數。err=json.unmarshal(btye(str字串),&結構體變數)

注意:

結構體內部的字段首字母要大寫,否則訪問不到。如果前端要求變數名為小寫的,可以使用tag標籤。

反序列化時要傳遞指標。

日常學習總結

關於vb中的把字串 日期型 數值型 賦值給某個變數的寫法 eg dim m1,r 此處我並不清楚 m1 到底是什麼型別 所以vb會自動匹配其應該所屬的型別,這是vb的一點強大之處 m select fitemid from t item where fitemclassid 3 and fnumbe...

工作日常總結學習

主要記錄工作當中一些基礎知識的累積,方便日後複習。我們把系統時鐘配置分為七個步驟,分別用標號 表示,詳細過程為 時鐘源引數設定 hse 或者 hsi 配置。這裡我們選擇 hse 為時鐘源,所以我們之前必須 在 rcc 配置中我們開啟 hse。時鐘源選擇 hse 還是 hsi。這裡我們配置選擇器選擇 ...

總結 日常總結

最近變得浮躁了,學不進了,那就寫總結吧。關於刷題 從去年十一月份到現在,感覺唯一堅持的意見事情就是刷力扣了。四個多月,寫了六百多道題,大概有四五題一天,然後也在堅持參加周賽。很多時候,有些事情成了習慣,那麼也就不需要去堅持了。比如說現在,每天都是先把每日一題和劍指 offer 的任務完成了再開始做其...