欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

go語(yǔ)言圣經(jīng)練習(xí)答案 go語(yǔ)言圣經(jīng)中文版

2.range的用法

僅為個(gè)人閱讀時(shí)遇到的困惑的理解,希望友善討論

創(chuàng)新互聯(lián)提供成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì),成都品牌網(wǎng)站建設(shè),廣告投放等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,十余年的網(wǎng)站開(kāi)發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破1000+,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

2021.6.25

《GO語(yǔ)言圣經(jīng)》-《GO程序設(shè)計(jì)語(yǔ)言》

P5

在命令行中運(yùn)行

go run main.go 一 二三 四

得到的結(jié)果

在命令行中運(yùn)行

go run main.go 一 二三 四

得到的結(jié)果

range 獲取一個(gè)范圍,

有兩個(gè)返回值,在本例中分別是 i 和 arg 。

第一個(gè)返回值 i 總是從0開(kāi)始的,和 range 取范圍的值(也就是本例中的 os.Args )無(wú)關(guān)。(也就是本例中 os.Args[1:] 雖然是從 os.Args 的1值開(kāi)始取的,但是在 range 中還是0)。

第二個(gè)返回值 arg 是切片的結(jié)果。

我理解的: range 將 os.Args 切成一個(gè)數(shù)組,先返回?cái)?shù)組下標(biāo),再返回?cái)?shù)組內(nèi)容。

Go 語(yǔ)言自我提升 (三次握手 - 四次揮手 - TCP狀態(tài)圖 - udp - 網(wǎng)絡(luò)文件傳輸)

三次握手:

1. 主動(dòng)發(fā)起連接請(qǐng)求端(客戶端),發(fā)送 SYN 標(biāo)志位,攜帶數(shù)據(jù)包、包號(hào)

2. 被動(dòng)接收連接請(qǐng)求端(服務(wù)器),接收 SYN,回復(fù) ACK,攜帶應(yīng)答序列號(hào)。同時(shí),發(fā)送SYN標(biāo)志位,攜帶數(shù)據(jù)包、包號(hào)

3. 主動(dòng)發(fā)起連接請(qǐng)求端(客戶端),接收SYN 標(biāo)志位,回復(fù) ACK。

被動(dòng)端(服務(wù)器)接收 ACK —— 標(biāo)志著 三次握手建立完成( Accept()/Dial() 返回 )

四次揮手:

1. 主動(dòng)請(qǐng)求斷開(kāi)連接端(客戶端), 發(fā)送 FIN標(biāo)志,攜帶數(shù)據(jù)包

2. 被動(dòng)接受斷開(kāi)連接端(服務(wù)器), 發(fā)送 ACK標(biāo)志,攜帶應(yīng)答序列號(hào)。 —— 半關(guān)閉完成。

3. 被動(dòng)接受斷開(kāi)連接端(服務(wù)器), 發(fā)送 FIN標(biāo)志,攜帶數(shù)據(jù)包

4. 主動(dòng)請(qǐng)求斷開(kāi)連接端(客戶端), 發(fā)送 最后一個(gè) ACK標(biāo)志,攜帶應(yīng)答序列號(hào)。—— 發(fā)送完成,客戶端不會(huì)直接退出,等 2MSL時(shí)長(zhǎng)。

等 2MSL待目的:確保服務(wù)器 收到最后一個(gè)ACK

滑動(dòng)窗口:

通知對(duì)端本地存儲(chǔ)數(shù)據(jù)的 緩沖區(qū)容量。—— write 函數(shù)在對(duì)端 緩沖區(qū)滿時(shí),有可能阻塞。

TCP狀態(tài)轉(zhuǎn)換:

1. 主動(dòng)發(fā)起連接請(qǐng)求端:

CLOSED —— 發(fā)送SYN —— SYN_SENT(了解) —— 接收ACK、SYN,回發(fā) ACK —— ESTABLISHED (數(shù)據(jù)通信)

2. 主動(dòng)關(guān)閉連接請(qǐng)求端:

ESTABLISHED —— 發(fā)送FIN —— FIN_WAIT_1 —— 接收ACK —— FIN_WAIT_2 (半關(guān)閉、主動(dòng)端)

—— 接收FIN、回復(fù)ACK —— TIME_WAIT (主動(dòng)端) —— 等 2MSL 時(shí)長(zhǎng) —— CLOSED

3. 被動(dòng)建立連接請(qǐng)求端:

CLOSED —— LISTEN —— 接收SYN、發(fā)送ACK、SYN —— SYN_RCVD —— 接收 ACK —— ESTABLISHED (數(shù)據(jù)通信)

4. 被動(dòng)斷開(kāi)連接請(qǐng)求端:

ESTABLISHED —— 接收 FIN、發(fā)送 ACK —— CLOSE_WAIT —— 發(fā)送 FIN —— LAST_ACK —— 接收ACK —— CLOSED

windows下查看TCP狀態(tài)轉(zhuǎn)換:

netstat -an | findstr? 端口號(hào)

Linux下查看TCP狀態(tài)轉(zhuǎn)換:

netstat -an | grep? 端口號(hào)

TCP和UDP對(duì)比:?

TCP: 面向連接的可靠的數(shù)據(jù)包傳遞。 針對(duì)不穩(wěn)定的 網(wǎng)絡(luò)層,完全彌補(bǔ)。ACK

UDP:無(wú)連接不可靠的報(bào)文傳輸。 針對(duì)不穩(wěn)定的 網(wǎng)絡(luò)層,完全不彌補(bǔ)。還原網(wǎng)絡(luò)真實(shí)狀態(tài)。

優(yōu)點(diǎn)???????????????????????????????????????????????????????????? 缺點(diǎn)

TCP: 可靠、順序、穩(wěn)定 ???????????????????????????????????? 系統(tǒng)資源消耗大,程序?qū)崿F(xiàn)繁復(fù)、速度慢

UDP:系統(tǒng)資源消耗小,程序?qū)崿F(xiàn)簡(jiǎn)單、速度快 ???????????????????????? 不可靠、無(wú)序、不穩(wěn)定

使用場(chǎng)景:

TCP:大文件、可靠數(shù)據(jù)傳輸。 對(duì)數(shù)據(jù)的 穩(wěn)定性、準(zhǔn)確性、一致性要求較高的場(chǎng)合。

UDP:應(yīng)用于對(duì)數(shù)據(jù)時(shí)效性要求較高的場(chǎng)合。 網(wǎng)絡(luò)直播、電話會(huì)議、視頻直播、網(wǎng)絡(luò)游戲。

UDP-CS-Server實(shí)現(xiàn)流程:

1.? 創(chuàng)建 udp地址結(jié)構(gòu) ResolveUDPAddr(“協(xié)議”, “IP:port”) —— udpAddr 本質(zhì) struct{IP、port}

2.? 創(chuàng)建用于 數(shù)據(jù)通信的 socket ListenUDP(“協(xié)議”, udpAddr ) —— udpConn (socket)

3.? 從客戶端讀取數(shù)據(jù),獲取對(duì)端的地址 udpConn.ReadFromUDP() —— 返回:n,clientAddr, err

4.? 發(fā)送數(shù)據(jù)包給 客戶端 udpConn.WriteToUDP("數(shù)據(jù)", clientAddr)

UDP-CS-Client實(shí)現(xiàn)流程:

1.? 創(chuàng)建用于通信的 socket。 net.Dial("udp", "服務(wù)器IP:port") —— udpConn (socket)

2.? 以后流程參見(jiàn) TCP客戶端實(shí)現(xiàn)源碼。

UDPserver默認(rèn)就支持并發(fā)!

------------------------------------

命令行參數(shù): 在main函數(shù)啟動(dòng)時(shí),向整個(gè)程序傳參。 【重點(diǎn)】

語(yǔ)法: go run xxx.go ? argv1 argv2? argv3? argv4 。。。

xxx.exe:? 第 0 個(gè)參數(shù)。

argv1 :第 1 個(gè)參數(shù)。

argv2 :第 2 個(gè)參數(shù)。

argv3 :第 3 個(gè)參數(shù)。

argv4 :第 4 個(gè)參數(shù)。

使用: list := os.Args? 提取所有命令行參數(shù)。

獲取文件屬性函數(shù):

os.stat(文件訪問(wèn)絕對(duì)路徑) —— fileInfo 接口

fileInfo 包含 兩個(gè)接口。

Name() 獲取文件名。 不帶訪問(wèn)路徑

Size() 獲取文件大小。

網(wǎng)絡(luò)文件傳輸 —— 發(fā)送端(客戶端)

1.? 獲取命令行參數(shù),得到文件名(帶路徑)filePath list := os.Args

2.? 使用 os.stat() 獲取 文件名(不帶路徑)fileName

3.? 創(chuàng)建 用于數(shù)據(jù)傳輸?shù)?socket? net.Dial("tcp", “服務(wù)器IP+port”) —— conn

4.? 發(fā)送文件名(不帶路徑)? 給接收端, conn.write()

5.? 讀取 接收端回發(fā)“ok”,判斷無(wú)誤。封裝函數(shù) sendFile(filePath, conn) 發(fā)送文件內(nèi)容

6.? 實(shí)現(xiàn) sendFile(filePath,? conn)

1) 只讀打開(kāi)文件 os.Open(filePath)

for {

2) 從文件中讀數(shù)據(jù)? f.Read(buf)

3) 將讀到的數(shù)據(jù)寫(xiě)到socket中? conn.write(buf[:n])

4)判斷讀取文件的 結(jié)尾。 io.EOF. 跳出循環(huán)

}

網(wǎng)絡(luò)文件傳輸 —— 接收端(服務(wù)器)

1. 創(chuàng)建用于監(jiān)聽(tīng)的 socket net.Listen() —— listener

2. 借助listener 創(chuàng)建用于 通信的 socket listener.Accpet()? —— conn

3. 讀取 conn.read() 發(fā)送端的 文件名, 保存至本地。

4. 回發(fā) “ok”應(yīng)答 發(fā)送端。

5. 封裝函數(shù),接收文件內(nèi)容 recvFile(文件路徑)

1) f = os.Create(帶有路徑的文件名)

for {

2)從 socket中讀取發(fā)送端發(fā)送的 文件內(nèi)容 。 conn.read(buf)

3)? 將讀到的數(shù)據(jù) 保存至本地文件 f.Write(buf[:n])

4)? 判斷 讀取conn 結(jié)束, 代表文件傳輸完成。 n == 0? break

}

1.os.Args是做什么的

僅為個(gè)人閱讀時(shí)遇到的困惑的理解

2021.6.16

《GO語(yǔ)言圣經(jīng)》-《GO程序設(shè)計(jì)語(yǔ)言》

P3

在命令行中運(yùn)行 go run main.go 123

會(huì)輸出 123

在命令行中分別輸入(注意空格)

(1) go run main.go 123

(2) go run main.go 1 2 3

(1)中輸出結(jié)果

第一行是go命令的位置

第二行是for循環(huán)內(nèi)的“一個(gè)參數(shù)”的結(jié)果

第三行是for循環(huán)外的最終結(jié)果

(2)中輸出結(jié)果

第二行是for循環(huán)內(nèi)“第一個(gè)參數(shù)”的結(jié)果

第三行是for循環(huán)內(nèi)“第一個(gè)和第二個(gè)參數(shù)”的結(jié)果

以此類推。

(3)如果空格大于一個(gè),仍會(huì)以一個(gè)空格輸出

這時(shí)我才理解到書(shū)中所講述的:

也就是以空格分隔代表新的一個(gè)參數(shù)。

Go語(yǔ)言基礎(chǔ)語(yǔ)法(一)

本文介紹一些Go語(yǔ)言的基礎(chǔ)語(yǔ)法。

先來(lái)看一個(gè)簡(jiǎn)單的go語(yǔ)言代碼:

go語(yǔ)言的注釋方法:

代碼執(zhí)行結(jié)果:

下面來(lái)進(jìn)一步介紹go的基礎(chǔ)語(yǔ)法。

go語(yǔ)言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫(kù),

常用方法:

示例代碼:

執(zhí)行結(jié)果:

更多格式化方法可以訪問(wèn)中的fmt包。

log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),也提供了一些格式化輸出的方法。

執(zhí)行結(jié)果:

下面來(lái)介紹一下go的數(shù)據(jù)類型

下表列出了go語(yǔ)言的數(shù)據(jù)類型:

int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。

常量是在程序編譯時(shí)就確定下來(lái)的值,程序運(yùn)行時(shí)無(wú)法改變。

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

Go 語(yǔ)言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。

算術(shù)運(yùn)算符:

關(guān)系運(yùn)算符:

邏輯運(yùn)算符:

位運(yùn)算符:

賦值運(yùn)算符:

指針相關(guān)運(yùn)算符:

下面介紹一下go語(yǔ)言中的if語(yǔ)句和switch語(yǔ)句。另外還有一種控制語(yǔ)句叫select語(yǔ)句,通常與通道聯(lián)用,這里不做介紹。

if語(yǔ)法格式如下:

if ... else :

else if:

示例代碼:

語(yǔ)法格式:

另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,不管下一條case語(yǔ)句是否為true。

示例代碼:

執(zhí)行結(jié)果:

下面介紹幾種循環(huán)語(yǔ)句:

執(zhí)行結(jié)果:

執(zhí)行結(jié)果:

也可以通過(guò)標(biāo)記退出循環(huán):

--THE END--

網(wǎng)頁(yè)題目:go語(yǔ)言圣經(jīng)練習(xí)答案 go語(yǔ)言圣經(jīng)中文版
網(wǎng)頁(yè)URL:http://aaarwkj.com/article14/doodgge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、動(dòng)態(tài)網(wǎng)站小程序開(kāi)發(fā)、定制開(kāi)發(fā)自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(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)

成都定制網(wǎng)站建設(shè)
免费看国产一级黄色大片| 福利午夜福利在线观看| 亚洲av综合日韩精品久久| 亚洲日本欧美激情综合| 久久国产精品一品二品| 99久久免费中文字幕| 久久综合中文字幕一区| 日韩精品在线观看你懂的| 99久久精品人妻一区| 在线蜜臀av中文字幕| 一区二区三区欧美影片| 人妻中文字幕日韩av| 一区二区三区欧美小黄片| 亚洲精品永久在线观看| 日本a级片免费在线观看| 日本经典三级在线视频| 久久99热最新地址获取| 日本欧美一区二区三区高清| 国产亚洲黄片免费在线观看| 成人黄色动漫在线播放| 国产夫妻性生活视频播放| 国产麻豆精品免费喷白浆视频网站| 加勒比人妻一区二区三区| 日产精品一级二级三级爱| 成人黄色av免费在线观看| 日韩亚洲国产激情一区二区| 国产原创中文剧情性感av| 一区二区尤物区亚洲国产精品区| 91亚洲精品久久久蜜桃网站| 激情自拍偷拍合集一部| 蜜桃人妻av一区二区三区| 91精品国产综合久久不国产大片| 日韩精品a区二区在线电影| 国产一区二区三区免费有码视频| 激情小说婷婷亚洲综合| 日韩精品综合成人欧美| 五月婷婷丁香噜噜噜噜| 精品亚洲一区二区在线| 欧美国产激情一区二区| 国产成人国产精品国产三级| 国产精品va在线观看入口|