最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
go語(yǔ)言常用包介紹 go 常用包

4.1 Go語(yǔ)言中包(Packages)基礎(chǔ)知識(shí)

先看一下目錄結(jié)構(gòu),注意這里的src名稱是必須的,go在設(shè)置了GOPATH后,默認(rèn)會(huì)添加src去尋找package,暫未查詢是否有方法不按照src查詢

10年積累的成都網(wǎng)站建設(shè)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有襄陽(yáng)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

根據(jù)上面的描述,Go語(yǔ)言中通過(guò)包中函數(shù)的名稱來(lái)區(qū)分公共函數(shù)和私有函數(shù),我們?cè)趍ain函數(shù)中是無(wú)法調(diào)用myPrivateFunc的

此時(shí)如果執(zhí)行通過(guò)go run方式執(zhí)行,會(huì)看到如下的提示信息,這與大部分語(yǔ)言對(duì)于包管理方式相關(guān),所以我們通過(guò)兩種不同的方法來(lái)讓代碼執(zhí)行起來(lái)

返回如下,這里面對(duì)我們后續(xù)執(zhí)行有影響的兩個(gè)參數(shù)GO111MODULE和GOPATH

如果要使用gopath模式引用包,則需要關(guān)閉mod模式

設(shè)置GOPATH為當(dāng)前路徑,即main.go所在的路徑

此時(shí)再查看go env時(shí),GOPATH已經(jīng)發(fā)生改變

我們?cè)俅螄L試執(zhí)行代碼

可以看到public函數(shù)被調(diào)用

golang中bufio包

一、介紹go標(biāo)準(zhǔn)庫(kù)中的bufio

最近用golang寫了一個(gè)處理文件的腳本,由于其中涉及到了文件讀寫,開始使用golang中的 io 包,后來(lái)發(fā)現(xiàn)golang 中提供了一個(gè)bufio的包,使用這個(gè)包可以大幅提高文件讀寫的效率,于是在網(wǎng)上搜索同樣的文件讀寫為什么bufio 要比io 的讀寫更快速呢?根據(jù)網(wǎng)上的資料和閱讀源碼,以下來(lái)詳細(xì)解釋下bufio的高效如何實(shí)現(xiàn)的。

bufio 包介紹

bufio包實(shí)現(xiàn)了有緩沖的I/O。它包裝一個(gè)io.Reader或io.Writer接口對(duì)象,創(chuàng)建另一個(gè)也實(shí)現(xiàn)了該接口,且同時(shí)還提供了緩沖和一些文本I/O的幫助函數(shù)的對(duì)象。

以上為官方包的介紹,在其中我們能了解到的信息如下:

bufio 是通過(guò)緩沖來(lái)提高效率

簡(jiǎn)單的說(shuō)就是,把文件讀取進(jìn)緩沖(內(nèi)存)之后再讀取的時(shí)候就可以避免文件系統(tǒng)的io 從而提高速度。同理,在進(jìn)行寫操作時(shí),先把文件寫入緩沖(內(nèi)存),然后由緩沖寫入文件系統(tǒng)。看完以上解釋有人可能會(huì)表示困惑了,直接把 內(nèi)容-文件 和 內(nèi)容-緩沖-文件相比, 緩沖區(qū)好像沒(méi)有起到作用嘛。其實(shí)緩沖區(qū)的設(shè)計(jì)是為了存儲(chǔ)多次的寫入,最后一口氣把緩沖區(qū)內(nèi)容寫入文件。下面會(huì)詳細(xì)解釋

bufio 封裝了io.Reader或io.Writer接口對(duì)象,并創(chuàng)建另一個(gè)也實(shí)現(xiàn)了該接口的對(duì)象

io.Reader或io.Writer 接口實(shí)現(xiàn)read() 和 write() 方法,對(duì)于實(shí)現(xiàn)這個(gè)接口的對(duì)象都是可以使用這兩個(gè)方法的

注明:介紹內(nèi)容來(lái)自博主 LiangWenT

,原文鏈接: ,在查找資料時(shí),發(fā)現(xiàn)這篇博客的內(nèi)容很好理解

bufio包實(shí)現(xiàn)了緩存IO。它包裝了io.Reader和io.Write對(duì)象,創(chuàng)建了另外的Reader和Writer對(duì)象,它們也實(shí)現(xiàn)了io.Reader和io.Write接口,具有緩存。注意:緩存是放在主存中,既然是保存在主存里,斷電會(huì)丟失數(shù)據(jù),那么要及時(shí)保存數(shù)據(jù)。

二、常用內(nèi)容

1、Reader類型

NewReaderSize

作用:NewReaderSize將rd封裝成一個(gè)帶緩存的bufio.Reader對(duì)象。緩存大小由size指定(如果小于16則會(huì)被設(shè)為16)。如果rd的基類型就是有足夠緩存的bufio.Reader類型,則直接將rd轉(zhuǎn)換為基類型返回。

NewReader

funcReader相當(dāng)于NewReaderSize(rd, 4096)

Peek

Peek返回緩存的一個(gè)切片,該切片引用緩存中前n個(gè)字節(jié)的數(shù)據(jù),該操作不會(huì)將數(shù)據(jù)讀出,只是引用,引用的數(shù)據(jù)在下一次讀取操作之前有效的。如果切片長(zhǎng)度小于n,則返回一個(gè)錯(cuò)誤信息說(shuō)明原因。如果n大于緩存的總大小,則返回ErrBufferFull。

Read

Read從b中數(shù)據(jù)到p中,返回讀出的字節(jié)數(shù)和遇到的錯(cuò)誤。如果緩存不為空,則只能讀出緩沖中的數(shù)據(jù),不會(huì)從底層io.Reader中提取數(shù)據(jù),如果緩存為空,則:

1、len(p) = 緩存大小,則跳過(guò)緩存,直接從底層io.Reader中讀出到p中

2、len(p) 緩存大小,則先將數(shù)據(jù)從底層io.Reader中讀取到緩存中,再?gòu)木彺孀x取到p中。

Buffered

Buffered返回緩存中未讀取的數(shù)據(jù)的長(zhǎng)度。

Discard

Discard跳過(guò)后續(xù)的n個(gè)字節(jié)的數(shù)據(jù),返回跳過(guò)的字節(jié)數(shù)。

Writer類型和方法

write結(jié)構(gòu)

NewWriteSize

NewWriterSize將wr封裝成一個(gè)帶緩存的bufio.Writer對(duì)象,緩存大小由size指定(如果小于4096則會(huì)被設(shè)置未4096)。

NewWrite

NewWriter相等于NewWriterSize(wr, 4096)

WriteString

WriteString功能同Write,只不過(guò)寫入的是字符串

WriteRune

WriteRune向b寫入r的UTF-8編碼,返回r的編碼長(zhǎng)度。

Flush

Available

Available 返回緩存中未使用的空間的長(zhǎng)度

Buffered

Buffered返回緩存中未提交的數(shù)據(jù)長(zhǎng)度

Reset

Reset將b的底層Write重新指定為w,同時(shí)丟棄緩存中的所有數(shù)據(jù),復(fù)位所有標(biāo)記和錯(cuò)誤信息。相當(dāng)于創(chuàng)建了一個(gè)新的bufio.Writer。

GO中還提供了Scanner類型,處理一些比較簡(jiǎn)單的場(chǎng)景。如處理按行讀取輸入序列或空格分隔的詞等。

內(nèi)容來(lái)自:

參考鏈接:

1)

2)

golang常用的包----寫日志 log包

golang提供了一個(gè)簡(jiǎn)單的日志輸出包log,常用用法,已經(jīng)基本滿足日常的日志輸出需求

1、日志級(jí)別有3個(gè),info,fatal,panic

2、 日志文件的輸出

輸出的結(jié)果 a.log

[Debug]main.go:45: debug info is ,check list ,hello

[Debug]main.go:46: debug info is ,check list ,hello000111

[Info]2020/09/09 Info check

標(biāo)準(zhǔn)輸出:

[Info]2020/09/09 Info check stdout

樣例二:

輸出結(jié)果為:

[Info]2020/09/09 Check init info

[Info]2020/09/09 go to function Check

Golang 公共變量包——expvar

expvar 包是 Golang 官方提供的公共變量包,它可以輔助調(diào)試全局變量。支持一些常見的類型: float64 、 int64 、 Map 、 String 。如果我們的程序要用到上面提的四種類型(其中,Map 類型要求 Key 是字符串)??梢钥紤]使用這個(gè)包。

這些基礎(chǔ)的功能就不多說(shuō)了,大家可以直接看官方的 文檔 。

看源碼的時(shí)候發(fā)現(xiàn)一個(gè)非常有意思的調(diào)試接口, /debug/vars 會(huì)把所有注冊(cè)的變量打印到接口里面。這個(gè)接口很有情懷。

感覺(jué)這個(gè)包還是針對(duì)簡(jiǎn)單變量,比如整形、字符串這種比較好用。

看到就寫了,并沒(méi)有什么沉淀,寫得挺亂的。這個(gè)包很簡(jiǎn)單,但是里面還是有些可以借鑒的編碼和設(shè)計(jì)。新版本的 Golang 已經(jīng)能解析整形為 Key 的哈希表了,這個(gè)包啥時(shí)候能跟上支持一下?


網(wǎng)頁(yè)題目:go語(yǔ)言常用包介紹 go 常用包
URL鏈接:http://fisionsoft.com.cn/article/dodphec.html