本文主要介紹了Go語(yǔ)言中文件讀寫(xiě)的相關(guān)操作。
成都創(chuàng)新互聯(lián)專(zhuān)注于團(tuán)風(fēng)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供團(tuán)風(fēng)營(yíng)銷(xiāo)型網(wǎng)站建設(shè),團(tuán)風(fēng)網(wǎng)站制作、團(tuán)風(fēng)網(wǎng)頁(yè)設(shè)計(jì)、團(tuán)風(fēng)網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)服務(wù),打造團(tuán)風(fēng)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供團(tuán)風(fēng)網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤(pán))上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開(kāi)一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語(yǔ)句。
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ù)能夠以指定模式打開(kāi)文件,從而實(shí)現(xiàn)文件寫(xiě)入相關(guān)功能。
其中:
name :要打開(kāi)的文件名 flag :打開(kāi)文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫(xiě))02,x(執(zhí)行)01。
Go語(yǔ)言在Centos下的安裝:
注意,以下命令需要以root身份,或者sudo運(yùn)行。
說(shuō)明,如果要自定義安裝位置的話,需要配置GOROOT環(huán)境變量,所以這里我們采用默認(rèn)的目錄進(jìn)行安裝,就可以不配置GOROOT環(huán)境變量了。
首先去官網(wǎng)下載go的安裝包,這里用的是:go1.5.1.linux-amd64.tar.gz
■ 1,選擇安裝路徑
由于默認(rèn)的go路徑,在/usr/local下, 所以用如下命令,解壓創(chuàng)建/usr/local/go
tar -C /usr/local -xzf go1.5.1.linux-amd64.tar.gz
■ 2,添加PATH環(huán)境變量
vi /etc/profile
然后加入下面這行:
export PATH=$PATH:/usr/local/go/bin
■ 3,建立Go的工作空間(workspace,也就是GOPATH環(huán)境變量指向的目錄)
GO代碼必須在工作空間內(nèi)。工作空間是一個(gè)目錄,其中包含三個(gè)子目錄:
src ---- 里面每一個(gè)子目錄,就是一個(gè)包。包內(nèi)是Go的源碼文件
pkg ---- 編譯后生成的,包的目標(biāo)文件
bin ---- 生成的可執(zhí)行文件。
這里,我們?cè)?home目錄下, 建立一個(gè)名為gopath(可以不是gopath, 任意名字都可以)的文件夾,
然后再建立三個(gè)子文件夾(子文件夾名必須為src、pkg、bin)。如下圖:
■ 4,設(shè)置GOPATH環(huán)境變量
vi /etc/profile
然后加入下面這行:
export GOPATH=/home/gopath
保存后,執(zhí)行以下命令,使環(huán)境變量立即生效:
source /etc/profile
至此,Go語(yǔ)言的環(huán)境已經(jīng)安裝完畢。下面開(kāi)始 HelloWorld
1、下載go的zip文件。并且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級(jí)環(huán)境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path變量里面把c:\go\bin加入。以便可以在命令行直接運(yùn)行g(shù)o命令。
舉例:我的機(jī)器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫(xiě)的go語(yǔ)言項(xiàng)目的工程目錄;
F:\workspace\goSample01\bin是go語(yǔ)言項(xiàng)目的工程目錄下的可執(zhí)行文件路徑;
3、在完成環(huán)境變量配置后,打開(kāi)一個(gè)命令行窗口,直接輸入go,然后回車(chē),看看是否出現(xiàn)go的幫助信息。如果出現(xiàn),那么go的基本環(huán)境就OK了。
注意:這個(gè)基本環(huán)境不包含開(kāi)發(fā)工具,也不能直接編譯帶C代碼的go程序。
4、(可選)為了支持Import遠(yuǎn)程包,最好裝個(gè)gomingw。下載地址:。如果下的是壓縮包,請(qǐng)把它解壓到C盤(pán)。例如,C:\gowin-env。里面有個(gè)Console.bat是以后使用go get的環(huán)境。舉例:有個(gè)文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動(dòng)Console.bat,然后在該命令行窗口,進(jìn)入c:\go\src目錄下,執(zhí)行g(shù)o getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會(huì)自動(dòng)下載該遠(yuǎn)程包并編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開(kāi)發(fā)工具,請(qǐng)?zhí)^(guò)這個(gè)配置。)
1、下載并安裝goclipse插件。Goclipse是go語(yǔ)言for eclipse的插件,下載地址:
2、啟動(dòng)eclipse并創(chuàng)建go項(xiàng)目。然后寫(xiě)個(gè)最簡(jiǎn)單的helloworld.go文件,并運(yùn)行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語(yǔ)法輔助和eclipse里面的(按ALT+/)彈出go語(yǔ)言自動(dòng)輔助功能,請(qǐng)?zhí)^(guò)這個(gè)配置。
1、下載gocode的zip文件,解壓后放在go的bin目錄下。
2、下載并安裝Git軟件。并且在path里面配置git的執(zhí)行路徑。例如c:\git\bin
3、在命令行執(zhí)行:go build .\gocode。如果一切正常,那么將會(huì)編譯生成一個(gè)gocode.exe文件在go的bin目錄下。如果編譯失敗,那么就轉(zhuǎn)第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過(guò)git下載gocode源文件,然后再編譯。在命令行執(zhí)行:go get -u github.com/nsf/gocode 。就會(huì)生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路徑。就可以在elcipse里面調(diào)用gocode來(lái)幫助寫(xiě)編碼了。
從開(kāi)發(fā)工具這塊看,go語(yǔ)言還不夠成熟,開(kāi)發(fā)工具都還不完善,有待改進(jìn)。
下載go-tour教程源代碼(可選)
Google有個(gè)在線運(yùn)行g(shù)o語(yǔ)言的教程(),很不錯(cuò)。支持在web上直接運(yùn)行大部分的go程序,想了解這個(gè)教程的源代碼的朋友可以通過(guò)以下方式獲取。如果沒(méi)興趣,可以跳過(guò)這個(gè)步驟。
1.先安裝Go對(duì)應(yīng)的開(kāi)源Swagger相關(guān)的庫(kù)
go get?github.com/swaggo/swag/cmd/swag
go get github.com/swaggo/gin-swagger
go get?github.com/swaggo/files
go get?github.com/alecthomas/template
2.驗(yàn)證是否安裝成功:swag -v
3.針對(duì)接口寫(xiě)入注解
// @Summary 獲取多個(gè)標(biāo)簽
// @Tags 標(biāo)簽
// @Produce? json
// @Param name query string false "標(biāo)簽名稱(chēng)" maxlength(100)
// @Param state query int false "狀態(tài)" Enums(0, 1) default(1)
// @Param page query int false "頁(yè)碼"
// @Param page_size query int false "每頁(yè)數(shù)量"
// @Success 200 {object} model.TagSwagger "成功"
// @Failure 400 {object} errcode.Error "請(qǐng)求錯(cuò)誤"
// @Failure 500 {object} errcode.Error "內(nèi)部錯(cuò)誤"
// @Router /api/v1/tags [get]
func (t Tag) List(c *gin.Context) {
}
// @Summary 新增標(biāo)簽
// @Tags 標(biāo)簽
// @Produce? json
// @Param name body string true "標(biāo)簽名稱(chēng)" minlength(3) maxlength(100)
// @Param state body int false "狀態(tài)" Enums(0, 1) default(1)
// @Param created_by body string false "創(chuàng)建者" minlength(3) maxlength(100)
// @Success 200 {object} model.Tag "成功"
// @Failure 400 {object} errcode.Error "請(qǐng)求錯(cuò)誤"
// @Failure 500 {object} errcode.Error "內(nèi)部錯(cuò)誤"
// @Router /api/v1/tags [post]
func (t Tag) Create(c *gin.Context) {
}
// @Summary 更新標(biāo)簽
// @Tags 標(biāo)簽
// @Produce? json
// @Param id path int true "標(biāo)簽ID"
// @Param name body string false "標(biāo)簽名稱(chēng)" minlength(3) maxlength(100)
// @Param state body int false "狀態(tài) (0為未刪除、1為已刪除)" Enums(0, 1) default(1)
// @Param modified_by body string true "修改者" minlength(3) maxlength(100)
// @Success 200 {array} model.Tag "成功"
// @Failure 400 {object} errcode.Error "請(qǐng)求錯(cuò)誤"
// @Failure 500 {object} errcode.Error "內(nèi)部錯(cuò)誤"
// @Router /api/v1/tags/{id} [put]
func (t Tag) Update(c *gin.Context) {
}
4.針對(duì)整個(gè)項(xiàng)目進(jìn)行注解,直接在main方法寫(xiě)入如下注解
//@title 項(xiàng)目名稱(chēng)
//@version 1.0
//@description 這里是描述
func main() {
5.生成執(zhí)行 swag init
這時(shí)會(huì)在我項(xiàng)目的docs文件夾下面生成docs.go、swagger.json、swagger.yaml三個(gè)文件
6.要在routers中進(jìn)行默認(rèn)初始化和注冊(cè)對(duì)應(yīng)的路由:
r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
同時(shí)要引用 _"blog-service/docs" ,不然會(huì)報(bào)錯(cuò)
7.查看接口文檔 :
8.ok,完成
文章名稱(chēng):go語(yǔ)言的三個(gè)文件 go語(yǔ)言的包
當(dāng)前URL:http://jinyejixie.com/article14/ddcodde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、做網(wǎng)站、網(wǎng)站建設(shè)、服務(wù)器托管、企業(yè)網(wǎng)站制作、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(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)