基于Go語言搭建靜態(tài)文件服務(wù)器的詳細(xì)教程
1、簡介
Go語言誕生于2007年9月20日。
Go 是一個開源的編程語言,它能讓構(gòu)造簡單、可靠且高效的軟件變得容易。
Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發(fā)布了Go 1穩(wěn)定版本?,F(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。
語法簡單 Go語言在自由度和靈活度上做了取舍,以此換來了更好的維護(hù)性和平滑的學(xué)習(xí)曲線。
部署友好 Go靜態(tài)編譯后的二進(jìn)制文件不依賴額外的運行環(huán)境,編譯速度也非常快。
交叉編譯 Go僅需要在編譯時簡單設(shè)置兩個參數(shù),就可以編譯出能在其它平臺上運行的程序
天然并發(fā) Go語言對于并發(fā)的支持是純天然的,僅需一個關(guān)鍵字,就可以開啟一個異步協(xié)程。
垃圾回收 Go有著優(yōu)秀的GC性能,大部分情況下GC延時都不會超過1毫秒。
豐富的標(biāo)準(zhǔn)庫 從字符串處理到源碼AST解析,功能強大且豐富的標(biāo)準(zhǔn)庫是Go語言堅實的基礎(chǔ)。
完善的工具鏈 Go有著完善的開發(fā)工具鏈,涵蓋了編譯,測試,依賴管理,性能分析等方方面面。
2、安裝
2.1 安裝版
2.2 壓縮版
配置環(huán)境變量:
GOPATH=E:\Test\go_project GOROOT=E:\Test\go1.23.2.windows-amd64\go PATH += E:\Test\go1.23.2.windows-amd64\go\bin
測試是否配置成功:
go version
3、基本操作
3.1 go run
編譯完成并馬上運行 Go 程序。go run 只支持屬于 main 包的一個或多個文件作為參數(shù),不然是不能進(jìn)行編譯的。
go run main.go # or go run -n main.go
3.2 go build
編譯指定的源文件、軟件包和其他依賴,但是不會在編譯后執(zhí)行二進(jìn)制文件。
go build 和 go run 在編譯過程中其實是差不多的,不同之處是 go build 會生成編譯好二進(jìn)制文件并刪掉編譯過程產(chǎn)生的臨時目錄。若沒有-o 指定文件名,則和當(dāng)前目錄名一致。
go build main.go # or go build -x main.go
3.3 go install
編譯并安裝源文件、軟件包,即把編譯后的文件(可執(zhí)行二進(jìn)制文件、歸檔文件等)安裝到指定的目錄中。將編譯后的文件(可執(zhí)行二進(jìn)制文件、歸檔文件等)安裝到指定的目錄中。若設(shè)置了環(huán)境變量 GOBIN ,則把二進(jìn)制可執(zhí)行文件移到該目錄。若禁用 Go modules 則放到 G O P A T H / p k g / GOPATH/pkg/ GOPATH/pkg/GOOS_$GOARCH下。
go install -x main.go
3.4 go env
當(dāng)你安裝的GO的語言版本大于1.13的時候,直接使用go env -w命令就行了.
go env -w GOPROXY=https://goproxy.io,direct # Set environment variable allow bypassing the proxy for selected modules go env -w GOPRIVATE=*.corp.example.com go env -w GO111MODULE=on
使用go env環(huán)境變量在不同操作系統(tǒng)(Mac、Linux、Windows)之間交叉編譯64位Go應(yīng)用程序。通過設(shè)置CGO_ENABLED、GOOS和GOARCH,可以在本地構(gòu)建目標(biāo)平臺的可執(zhí)行文件,簡化了部署流程,避免了將整個項目上傳到服務(wù)器的需要。
Windows下編譯Mac, Linux平臺的64位可執(zhí)行程序:
go env -w CGO_ENABLED=0 GOOS=darwin3 GOARCH=amd64 go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
Linux下編譯Mac, Windows平臺的64位可執(zhí)行程序:
go env -w CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
Mac下編譯Linux, Windows平臺的64位可執(zhí)行程序:
go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
3.5 go module
go module是go官方自帶的go依賴管理庫,在1.13版本正式推薦使用。默認(rèn)值為空,即go判斷開不開啟module的依據(jù)是看當(dāng)前項目的根目錄下有沒有g(shù)o.mod文件,當(dāng)然我們也可手動更改為 on(全部開啟)/off(全部不開啟,不建議):
go env -w GO111MODULE=on go env -w GOPATH=D:\Golang1.19\gopath go env -w GOCACHE=D:\Golang1.19\gopath\go-build-cache
4、文件服務(wù)器
4.1 filebrowser
https://github.com/filebrowser/filebrowser
4.2 gohttpserver
https://github.com/codeskyblue/gohttpserver
輸入如下編譯命令:
go build
生成exe文件如下:
執(zhí)行exe如下:
瀏覽器訪問如下:
4.3 goFile
https://github.com/csznet/goFile
go build
生成exe文件如下:
瀏覽器訪問如下:
5、FAQ
5.1 go.mod 為空
go: go.mod file not found in current directory or any parent directory. ‘go get’ is no longer supported outside a module.
答:執(zhí)行如下命令即可:
go mod init mod
使用go env查看配置信息:
go env
5.2 超時
換個代理即可:
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
set GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct # 設(shè)置不走 proxy 的私有倉庫,多個用逗號相隔 go env -w GOPRIVATE=*.corp.example.com go get -u gorm.io/gorm
結(jié)語
以上就是基于Go語言搭建靜態(tài)文件服務(wù)器的詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于Go搭建靜態(tài)文件服務(wù)器的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
golang?基于?mysql?簡單實現(xiàn)分布式讀寫鎖
這篇文章主要介紹了golang?基于mysql簡單實現(xiàn)分布式讀寫鎖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09一文教你如何快速學(xué)會Go的切片和數(shù)組數(shù)據(jù)類型
數(shù)組是屬于同一類型的元素的集合。切片是數(shù)組頂部的方便、靈活且功能強大的包裝器。本文就來和大家聊聊Go中切片和數(shù)組的使用,需要的可以參考一下2023-03-03Go構(gòu)建器模式構(gòu)建復(fù)雜對象方法實例
本文介紹了構(gòu)建器模式,如何通過構(gòu)建器對象構(gòu)建復(fù)雜業(yè)務(wù)對象的方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Golang在Mac、Linux、Windows下如何交叉編譯的實現(xiàn)
這篇文章主要介紹了Golang在Mac、Linux、Windows下如何交叉編譯的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03在?Go?語言中使用?regexp?包處理正則表達(dá)式的操作
正則表達(dá)式是處理字符串時一個非常強大的工具,而?Go?語言的?regexp?包提供了簡單而強大的接口來使用正則表達(dá)式,本文將介紹如何在?Go?中使用?regexp?包來編譯和執(zhí)行正則表達(dá)式,以及如何從文本中匹配和提取信息,感興趣的朋友一起看看吧2023-12-12Go json omitempty如何實現(xiàn)可選屬性
在Go語言中,使用`omitempty`可以幫助我們在進(jìn)行JSON序列化和反序列化時,忽略結(jié)構(gòu)體中的零值或空值,本文介紹了如何通過將字段類型改為指針類型,并在結(jié)構(gòu)體的JSON標(biāo)簽中添加`omitempty`來實現(xiàn)這一功能,例如,將float32修改為*float322024-09-09golang使用http client發(fā)起get和post請求示例
這篇文章主要介紹了golang使用http client發(fā)起get和post請求示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02