2021-11-10
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出順城免費做網(wǎng)站回饋大家。
列表是一種非連續(xù)的存儲容器,有多個節(jié)點組成,節(jié)點通過一些變量記錄彼此之間的關(guān)系
單鏈表和雙鏈表就是列表的兩種方法。
原理:A、B、C三個人,B懂A的電話,C懂B的電話只是單方知道號碼,這樣就形成了一個單鏈表結(jié)構(gòu)。
如果C把自己的號碼給B,B把自己的號碼給A,因為是雙方都知道對方的號碼,這樣就形成了一個雙鏈表結(jié)構(gòu)
如果B換號碼了,他需要通知AC,把自己的號碼刪了,這個過程就是列表的刪除操作。
在Go語言中,列表使用 container/list 包來實現(xiàn),內(nèi)部的實現(xiàn)原理是雙鏈表,列表能夠高效地進行任意位置的元素插入和刪除操作。
列表初始化的兩種辦法
列表沒有給出具體的元素類型的限制,所以列表的元素可以是任意類型的,
例如給列表中放入了一個 interface{} 類型的值,取出值后,如果要將 interface{} 轉(zhuǎn)換為其他類型將會發(fā)生宕機。
雙鏈表支持從隊列前方或后方插入元素,分別對應(yīng)的方法是 PushFront 和 PushBack。
列表插入函數(shù)的返回值會提供一個 *list.Element 結(jié)構(gòu),這個結(jié)構(gòu)記錄著列表元素的值以及與其他節(jié)點之間的關(guān)系等信息,從列表中刪除元素時,需要用到這個結(jié)構(gòu)進行快速刪除。
遍歷完也能看到最后的結(jié)果
學(xué)習(xí)地址:
命令如下:
直接在終端中輸入gohelp即可顯示所有的go命令以及相應(yīng)命令功能簡介,主要有下面這些:
build:編譯包和依賴;clean:移除對象文件;doc:顯示包或者符號的文檔;env:打印go的環(huán)境信息;bug:啟動錯誤報告;fix:運行g(shù)otoolfix;fmt:運行g(shù)ofmt進行格式化;generate:從processingsource生成go文件
get:下載并安裝包和依賴;install:編譯并安裝包和依賴;list:列出包;run:編譯并運行g(shù)o程序;test:運行測試;tool:運行g(shù)o提供的工具;version:顯示go的版本;vet:運行g(shù)otoolvet;命令的使用方式為:gocommand[args],除此之外,可以使用gohelp;來顯示指定命令的更多幫助信息。;在運行g(shù)ohelp時,不僅僅打印了這些命令的基本信息,還給出了一些概念的幫助信息:;c:Go和c的相互調(diào)用;buildmode:構(gòu)建模式的描述;filetype:文件類型;gopath:GOPATH環(huán)境變量
environment:環(huán)境變量;importpath:導(dǎo)入路徑語法;packages:包列表的描述;testflag:測試符號描述;testfunc:測試函數(shù)描述等。
一.幾種公共方法
1)Print:???輸出到控制臺(不接受任何格式化,它等價于對每一個操作數(shù)都應(yīng)用?%v)
print 在golang中?是屬于輸出到標(biāo)準(zhǔn)錯誤流中并打印,官方不建議寫程序時候用它??梢栽賒ebug時候用
2)Println:?輸出到控制臺并換行
3)Printf :?只可以打印出格式化的字符串。只可以直接輸出字符串類型的變量(不可以輸出整形變量和整形等)
4)Sprintf:格式化并返回一個字符串而不帶任何輸出
5)Fprintf:來格式化并輸出到 io.Writers 而不是 os.Stdout
二.帶占位符輸出--網(wǎng)址:? ??
和python差不多的道理,這里簡單補充
v ????值的默認(rèn)格式
%+v???添加字段名(如結(jié)構(gòu)體)
%#v ?相應(yīng)值的Go語法表示?
%T????相應(yīng)值的類型的Go語法表示?
%%????字面上的百分號,并非值的占位符
%c?????相應(yīng)Unicode碼點所表示的字符?
%x?????十六進制表示,字母形式為小寫 a-f
%X?????十六進制表示,字母形式為大寫 A-F
%U???? Unicode格式:U+1234,等同于?"U+%04X"
package main
import (
"container/list"
"fmt"
"strings"
)
func main() {
items := list.New()
for _, x := range strings.Split("ABCDEFGH", "") {
items.PushFront(x)
}
items.PushBack(9)
for element := items.Front(); element != nil; element = element.Next() {
switch value := element.Value.(type) {
case string:
fmt.Printf("%s ", value)
case int:
fmt.Printf("%d ", value)
}
}
fmt.Println()
}