本文主要介紹了Go語言中文件讀寫的相關(guān)操作。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為長(zhǎng)安企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都做網(wǎng)站,長(zhǎng)安網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤)上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語句。
Read方法定義如下:
它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回 0 和 io.EOF 。 舉個(gè)例子:
使用for循環(huán)讀取文件中的所有數(shù)據(jù)。
bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。
os.OpenFile() 函數(shù)能夠以指定模式打開文件,從而實(shí)現(xiàn)文件寫入相關(guān)功能。
其中:
name :要打開的文件名 flag :打開文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫)02,x(執(zhí)行)01。
一直直接操作的框架 使用vscode 打開就會(huì)自動(dòng)裝包,這次想寫一個(gè)簡(jiǎn)單應(yīng)用,確不會(huì)怎么建項(xiàng)目,記錄如下。
go1.14 后,以及不再需要把項(xiàng)目寫在GOPATH下,所有不需要再配置。
配置GOPRXY goenv-w GOPROXY=(國內(nèi)無法訪問)
使用go mod方法新建項(xiàng)目。
任意位置新建文件夾。
文件夾下執(zhí)行g(shù)o mod xxx ,生成一個(gè)go.mod文件。
新建一個(gè)main.go文件,就可以直接運(yùn)行了。
我開始的時(shí)候,先建了main.go文件,再執(zhí)行的go.mod。后面沒法運(yùn)行。
參考:李文周的博客。
json格式可以算我們?nèi)粘W畛S玫男蛄谢袷街涣耍珿o語言作為一個(gè)由Google開發(fā),號(hào)稱互聯(lián)網(wǎng)的C語言的語言,自然也對(duì)JSON格式支持很好。官方提供的Json解析包已經(jīng)非常強(qiáng)大,我們接下來講解Json的序列化與反序列化操作。另外還有一些第三方的Json解析庫,也能夠高效的操作Json對(duì)象,比如simplejson,ffjson等。下面是兩個(gè)比較重要的函數(shù):
? Json Marshal:將數(shù)據(jù)編碼成json字符串
Marshal 用于將struct對(duì)象序列化到j(luò)son對(duì)象中。v是interface{}類型,任何類型都實(shí)現(xiàn)了空接口。
1:tag中的第一個(gè)參數(shù)是用來指定別名,比如Name 指定別名為 username `json:"username"`
2:如果不想指定別名但是想指定其他參數(shù)用逗號(hào)來分隔,omitempty 指定到一個(gè)field時(shí),如果在賦值時(shí)對(duì)該屬性未賦值或者對(duì)該屬性賦值為 zero value,那么將Person序列化成json時(shí)會(huì)忽略該字段
3:- 指定到一個(gè)field時(shí),無論有沒有值,將Person序列化成json時(shí)都會(huì)忽略該字段
4:string 指定到一個(gè)field時(shí),比如Person中的Count為int類型 如果沒有任何指定在序列化到j(luò)son之后也是int 比如這個(gè)樣子 “Count”:0,但是如果指定了string之后序列化之后也是string類型的,那么就是這個(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
本節(jié)主要介紹go語言對(duì)Elasticsearch文檔的基礎(chǔ)操作:創(chuàng)建、查詢、更新、刪除。
為了方便演示文檔的CRUD操作,我們先定義索引的struct結(jié)構(gòu)
根據(jù)文檔ID,查詢文檔
通過多個(gè)Id批量查詢文檔,對(duì)應(yīng)ES的multi get
根據(jù)id更新文檔
支持批量更新文檔內(nèi)容
提示: 復(fù)雜查詢條件,請(qǐng)參考 go es查詢用法
再簡(jiǎn)單不過了,給一個(gè)路徑給它,返回文件描述符,如果出現(xiàn)錯(cuò)誤就會(huì)返回一個(gè) *PathError。
這是一個(gè)只讀打開模式,實(shí)際上就是 os.OpenFile() 的快捷操作,它的原型如下:
新聞標(biāo)題:go語言創(chuàng)建文件操作,go語言創(chuàng)建項(xiàng)目
文章鏈接:http://vcdvsql.cn/article34/heghpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站收錄、Google、網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)、App開發(fā)
聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)