本文主要介紹了Go語(yǔ)言中文件讀寫(xiě)的相關(guān)操作。
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的沙坪壩網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
文件是什么?
計(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。
強(qiáng)大的跨平臺(tái)編程能力
Bowery團(tuán)隊(duì)指出Go能很方便地在不同系統(tǒng)里進(jìn)行程序編譯,這是他們轉(zhuǎn)入Go的重要原因之一。
作為開(kāi)發(fā)平臺(tái),對(duì)Linux,Windows,OSX等常見(jiàn)操作系統(tǒng)提供支援是能否吸引開(kāi)發(fā)者的基本要素。在Go中,開(kāi)發(fā)者可以針對(duì)不同操作系統(tǒng)定義不同的文件來(lái)實(shí)現(xiàn)相同的功能函數(shù)。Bowery團(tuán)隊(duì)成員Larz在創(chuàng)建Prompt應(yīng)用(命令行輸入)時(shí),就是借助Go而輕松實(shí)現(xiàn)了跨平臺(tái)編譯。而開(kāi)發(fā)者要做的,就是設(shè)置好不同的環(huán)境變量。
快速部署
在Go平臺(tái)中,從測(cè)試環(huán)境到真實(shí)環(huán)境的切換是非常便捷的,因?yàn)樗鼰o(wú)需額外的系統(tǒng)依賴(lài)。特別是對(duì)于Bowery提供給用戶的命令行工具來(lái)說(shuō),用戶無(wú)需安裝Java,RVM或者NPM等工具便可正常運(yùn)行。
并發(fā)處理
Node.js在并發(fā)處理方面處于劣勢(shì),僅有I/O程序或計(jì)時(shí)器運(yùn)行在并發(fā)模式。因此如果希望打造一個(gè)快速響應(yīng)的跨程序通訊系統(tǒng),Go無(wú)疑是更好的選擇。Go提供了低級(jí)別的并發(fā)處理基元,例如mutexes、wait groups等等。
整合測(cè)試框架
如果希望找到一個(gè)標(biāo)準(zhǔn)化的整合測(cè)試框架,不妨進(jìn)入Go來(lái)體驗(yàn)一番,它內(nèi)建了完整的測(cè)試包,免去了四處尋找的麻煩。如果想編寫(xiě)一個(gè)新的測(cè)試套件,只要把_test.go文件添加到相同的包里就可以了。有關(guān)Go測(cè)試的更多信息,請(qǐng)點(diǎn)擊這里進(jìn)行訪問(wèn)。
標(biāo)準(zhǔn)庫(kù)
Go提供了標(biāo)準(zhǔn)庫(kù),標(biāo)準(zhǔn)庫(kù)的好處是無(wú)需包含其他擴(kuò)展庫(kù),從而能節(jié)省開(kāi)發(fā)時(shí)間并且還提高了健壯性。
強(qiáng)大的開(kāi)發(fā)者工作流工具
Go的工作區(qū)界面能幫助建立標(biāo)準(zhǔn)化的工作流,雖然這或許會(huì)壓縮了開(kāi)發(fā)的自由度,但得到的是一個(gè)結(jié)構(gòu)化的有條理的工作區(qū):該區(qū)有三個(gè)根目錄,src用于放置源碼包,pkg用于放置編譯包,bin放置的是執(zhí)行文件。把源碼和依賴(lài)文件集中存儲(chǔ)的好處是使團(tuán)隊(duì)成員都有一個(gè)相同的文檔結(jié)構(gòu),而不會(huì)出現(xiàn)雜亂的文檔情況。此外gofmt能以相同風(fēng)格對(duì)代碼進(jìn)行格式化,這是一個(gè)非常實(shí)用的功能。所以一旦需要進(jìn)行調(diào)試,只需集中精力解決當(dāng)前問(wèn)題而無(wú)需分心處理結(jié)構(gòu)或風(fēng)格等瑣碎問(wèn)題
go語(yǔ)言 一個(gè)主package包引入同級(jí)目錄下go文件包編譯出錯(cuò)是設(shè)置錯(cuò)誤造成的,解決方法為:
1、先使用import "strings"導(dǎo)入strings庫(kù)。
2、HasPrefix?判斷字符串?s?是否以?prefix?開(kāi)頭。
3、HasSuffix?判斷字符串?s?是否以?suffix?結(jié)尾。
4、可以看看判斷的代碼。
5、在cmd下運(yùn)行一下go run test.go,看看如下結(jié)果。
6、Contains?判斷字符串?s?是否包含?substr,也就是判斷一下S是否在strings中。
7、在cmd下運(yùn)行g(shù)o run test.go看看結(jié)果。
本教程介紹 Go 中多模塊工作區(qū)的基礎(chǔ)知識(shí)。使用多模塊工作區(qū),您可以告訴 Go 命令您正在同時(shí)在多個(gè)模塊中編寫(xiě)代碼,并輕松地在這些模塊中構(gòu)建和運(yùn)行代碼。
在本教程中,您將在共享的多模塊工作區(qū)中創(chuàng)建兩個(gè)模塊,對(duì)這些模塊進(jìn)行更改,并在構(gòu)建中查看這些更改的結(jié)果。
本教程需要 go1.18 或更高版本。使用go.dev/dl中的鏈接確保您已在 Go 1.18 或更高版本中安裝了 Go 。
首先,為您要編寫(xiě)的代碼創(chuàng)建一個(gè)模塊。
1、打開(kāi)命令提示符并切換到您的主目錄。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,為您的代碼創(chuàng)建一個(gè)名為工作區(qū)的目錄。
3、初始化模塊
我們的示例將創(chuàng)建一個(gè)hello依賴(lài)于 golang.org/x/example 模塊的新模塊。
創(chuàng)建你好模塊:
使用 . 添加對(duì) golang.org/x/example 模塊的依賴(lài)項(xiàng)go get。
在 hello 目錄下創(chuàng)建 hello.go,內(nèi)容如下:
現(xiàn)在,運(yùn)行 hello 程序:
在這一步中,我們將創(chuàng)建一個(gè)go.work文件來(lái)指定模塊的工作區(qū)。
在workspace目錄中,運(yùn)行:
該go work init命令告訴為包含目錄中模塊的工作空間go創(chuàng)建一個(gè)文件 。go.work./hello
該go命令生成一個(gè)go.work如下所示的文件:
該go.work文件的語(yǔ)法與go.mod相同。
該go指令告訴 Go 應(yīng)該使用哪個(gè)版本的 Go 來(lái)解釋文件。它類(lèi)似于文件中的go指令go.mod 。
該use指令告訴 Go在進(jìn)行構(gòu)建時(shí)hello目錄中的模塊應(yīng)該是主模塊。
所以在模塊的任何子目錄中workspace都會(huì)被激活。
2、運(yùn)行工作區(qū)目錄下的程序
在workspace目錄中,運(yùn)行:
Go 命令包括工作區(qū)中的所有模塊作為主模塊。這允許我們?cè)谀K中引用一個(gè)包,即使在模塊之外。在模塊或工作區(qū)之外運(yùn)行g(shù)o run命令會(huì)導(dǎo)致錯(cuò)誤,因?yàn)樵揼o命令不知道要使用哪些模塊。
接下來(lái),我們將golang.org/x/example模塊的本地副本添加到工作區(qū)。然后,我們將向stringutil包中添加一個(gè)新函數(shù),我們可以使用它來(lái)代替Reverse.
在這一步中,我們將下載包含該模塊的 Git 存儲(chǔ)庫(kù)的副本golang.org/x/example,將其添加到工作區(qū),然后向其中添加一個(gè)我們將從 hello 程序中使用的新函數(shù)。
1、克隆存儲(chǔ)庫(kù)
在工作區(qū)目錄中,運(yùn)行g(shù)it命令來(lái)克隆存儲(chǔ)庫(kù):
2、將模塊添加到工作區(qū)
該go work use命令將一個(gè)新模塊添加到 go.work 文件中。它現(xiàn)在看起來(lái)像這樣:
該模塊現(xiàn)在包括example.com/hello模塊和 `golang.org/x/example 模塊。
這將允許我們使用我們將在模塊副本中編寫(xiě)的新代碼,而不是使用命令stringutil下載的模塊緩存中的模塊版本。
3、添加新功能。
我們將向golang.org/x/example/stringutil包中添加一個(gè)新函數(shù)以將字符串大寫(xiě)。
將新文件夾添加到workspace/example/stringutil包含以下內(nèi)容的目錄:
4、修改hello程序以使用該功能。
修改workspace/hello/hello.go的內(nèi)容以包含以下內(nèi)容:
從工作區(qū)目錄,運(yùn)行
Go 命令在go.work文件指定的hello目錄中查找命令行中指定的example.com/hello模塊 ,同樣使用go.work文件解析導(dǎo)入golang.org/x/example。
go.work可以用來(lái)代替添加replace 指令以跨多個(gè)模塊工作。
由于這兩個(gè)模塊在同一個(gè)工作區(qū)中,因此很容易在一個(gè)模塊中進(jìn)行更改并在另一個(gè)模塊中使用它。
現(xiàn)在,要正確發(fā)布這些模塊,我們需要發(fā)布golang.org/x/example 模塊,例如在v0.1.0. 這通常通過(guò)在模塊的版本控制存儲(chǔ)庫(kù)上標(biāo)記提交來(lái)完成。發(fā)布完成后,我們可以增加對(duì) golang.org/x/example模塊的要求hello/go.mod:
這樣,該go命令可以正確解析工作區(qū)之外的模塊。
Go語(yǔ)言模板文件可以引入js文件或css文件,但是在引入的過(guò)程中,需要注意以下幾點(diǎn):
1. 引入的文件路徑應(yīng)該是相對(duì)路徑,而不是絕對(duì)路徑。
2. 在引入js文件時(shí),需要使用{{ url }} 模板函數(shù),用來(lái)拼接路徑, 這樣可以更好的兼容不同的路徑。
3. 如果是在統(tǒng)一的文件夾中的js文件,最好使用{{ static }}模板函數(shù),這樣可以更好的節(jié)省路徑長(zhǎng)度。
4. 在引用js文件時(shí),需要在頁(yè)面底部,可以使用{{ template }}模板函數(shù),這樣可以保證js文件在頁(yè)面加載完成之前就被加載。
總之,使用Go語(yǔ)言模板文件引入js文件,需要注意路徑的相對(duì)性,并且使用模板函數(shù)來(lái)拼接路徑,這樣可以更好的兼容不同的路徑,從而保證引用js文件的正確性。
文章名稱(chēng):js解析go語(yǔ)言文件 gojs中文文檔
瀏覽路徑:http://jinyejixie.com/article36/docpepg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、靜態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站、微信公眾號(hào)、品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作
聲明:本網(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)