2021-11-10

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比橋西網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式橋西網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋橋西地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴(lài)。
列表是一種非連續(xù)的存儲(chǔ)容器,有多個(gè)節(jié)點(diǎn)組成,節(jié)點(diǎn)通過(guò)一些變量記錄彼此之間的關(guān)系
單鏈表和雙鏈表就是列表的兩種方法。
原理:A、B、C三個(gè)人,B懂A的電話,C懂B的電話只是單方知道號(hào)碼,這樣就形成了一個(gè)單鏈表結(jié)構(gòu)。
如果C把自己的號(hào)碼給B,B把自己的號(hào)碼給A,因?yàn)槭请p方都知道對(duì)方的號(hào)碼,這樣就形成了一個(gè)雙鏈表結(jié)構(gòu)
如果B換號(hào)碼了,他需要通知AC,把自己的號(hào)碼刪了,這個(gè)過(guò)程就是列表的刪除操作。
在Go語(yǔ)言中,列表使用 container/list 包來(lái)實(shí)現(xiàn),內(nèi)部的實(shí)現(xiàn)原理是雙鏈表,列表能夠高效地進(jìn)行任意位置的元素插入和刪除操作。
列表初始化的兩種辦法
列表沒(méi)有給出具體的元素類(lèi)型的限制,所以列表的元素可以是任意類(lèi)型的,
例如給列表中放入了一個(gè) interface{} 類(lèi)型的值,取出值后,如果要將 interface{} 轉(zhuǎn)換為其他類(lèi)型將會(huì)發(fā)生宕機(jī)。
雙鏈表支持從隊(duì)列前方或后方插入元素,分別對(duì)應(yīng)的方法是 PushFront 和 PushBack。
列表插入函數(shù)的返回值會(huì)提供一個(gè) *list.Element 結(jié)構(gòu),這個(gè)結(jié)構(gòu)記錄著列表元素的值以及與其他節(jié)點(diǎn)之間的關(guān)系等信息,從列表中刪除元素時(shí),需要用到這個(gè)結(jié)構(gòu)進(jìn)行快速刪除。
遍歷完也能看到最后的結(jié)果
學(xué)習(xí)地址:
json格式可以算我們?nèi)粘W畛S玫男蛄谢袷街涣耍珿o語(yǔ)言作為一個(gè)由Google開(kāi)發(fā),號(hào)稱(chēng)互聯(lián)網(wǎng)的C語(yǔ)言的語(yǔ)言,自然也對(duì)JSON格式支持很好。官方提供的Json解析包已經(jīng)非常強(qiáng)大,我們接下來(lái)講解Json的序列化與反序列化操作。另外還有一些第三方的Json解析庫(kù),也能夠高效的操作Json對(duì)象,比如simplejson,ffjson等。下面是兩個(gè)比較重要的函數(shù):
? Json Marshal:將數(shù)據(jù)編碼成json字符串
Marshal 用于將struct對(duì)象序列化到j(luò)son對(duì)象中。v是interface{}類(lèi)型,任何類(lèi)型都實(shí)現(xiàn)了空接口。
1:tag中的第一個(gè)參數(shù)是用來(lái)指定別名,比如Name 指定別名為 username `json:"username"`
2:如果不想指定別名但是想指定其他參數(shù)用逗號(hào)來(lái)分隔,omitempty 指定到一個(gè)field時(shí),如果在賦值時(shí)對(duì)該屬性未賦值或者對(duì)該屬性賦值為 zero value,那么將Person序列化成json時(shí)會(huì)忽略該字段
3:- 指定到一個(gè)field時(shí),無(wú)論有沒(méi)有值,將Person序列化成json時(shí)都會(huì)忽略該字段
4:string 指定到一個(gè)field時(shí),比如Person中的Count為int類(lèi)型 如果沒(méi)有任何指定在序列化到j(luò)son之后也是int 比如這個(gè)樣子 “Count”:0,但是如果指定了string之后序列化之后也是string類(lèi)型的,那么就是這個(gè)樣子"Count":"0"
? struct序列化為Json
? slice序列化為Json
? map 序列化為Json
? Json Unmarshal:將json字符串解碼到相應(yīng)的數(shù)據(jù)結(jié)構(gòu),Unmarshal的第一個(gè)參數(shù)是[]byte,第二個(gè)參數(shù)是接受json解析的數(shù)據(jù)結(jié)構(gòu)。
下面我們依次講解Json的操作。
1:將Json序列化進(jìn)入結(jié)構(gòu)體
2::將Json序列化到結(jié)構(gòu)體slice
3:將Json序列化進(jìn)Map
4:將Json序列化進(jìn)Slice
json.Marshal() 可以將大部分類(lèi)型的數(shù)據(jù)轉(zhuǎn)成json格式的,比如map, struct等等
package?main
import?(
"log"
"fmt"
"encoding/json"
)
func?main()?{
v?:=?map[string]string{
"name":"foo",
}
data,?err?:=?json.Marshal(v)
if?err?!=?nil?{
log.Println(err)
return
}
fmt.Println(string(data))
}
本文題目:go語(yǔ)言生成序列號(hào),go 生成代碼
文章出自:http://www.chinadenli.net/article40/hedeho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站制作、關(guān)鍵詞優(yōu)化、微信小程序、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)