基于Go语言搭建静态文件服务器的详细教程
作者:爱看书的小沐
1、简介
Go语言诞生于2007年9月20日。
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。
Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。
语法简单 Go语言在自由度和灵活度上做了取舍,以此换来了更好的维护性和平滑的学习曲线。
部署友好 Go静态编译后的二进制文件不依赖额外的运行环境,编译速度也非常快。
交叉编译 Go仅需要在编译时简单设置两个参数,就可以编译出能在其它平台上运行的程序
天然并发 Go语言对于并发的支持是纯天然的,仅需一个关键字,就可以开启一个异步协程。
垃圾回收 Go有着优秀的GC性能,大部分情况下GC延时都不会超过1毫秒。
丰富的标准库 从字符串处理到源码AST解析,功能强大且丰富的标准库是Go语言坚实的基础。
完善的工具链 Go有着完善的开发工具链,涵盖了编译,测试,依赖管理,性能分析等方方面面。
2、安装
2.1 安装版
2.2 压缩版
配置环境变量:
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 包的一个或多个文件作为参数,不然是不能进行编译的。
go run main.go # or go run -n main.go
3.2 go build
编译指定的源文件、软件包和其他依赖,但是不会在编译后执行二进制文件。
go build 和 go run 在编译过程中其实是差不多的,不同之处是 go build 会生成编译好二进制文件并删掉编译过程产生的临时目录。若没有-o 指定文件名,则和当前目录名一致。
go build main.go # or go build -x main.go
3.3 go install
编译并安装源文件、软件包,即把编译后的文件(可执行二进制文件、归档文件等)安装到指定的目录中。将编译后的文件(可执行二进制文件、归档文件等)安装到指定的目录中。若设置了环境变量 GOBIN ,则把二进制可执行文件移到该目录。若禁用 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
当你安装的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环境变量在不同操作系统(Mac、Linux、Windows)之间交叉编译64位Go应用程序。通过设置CGO_ENABLED、GOOS和GOARCH,可以在本地构建目标平台的可执行文件,简化了部署流程,避免了将整个项目上传到服务器的需要。
Windows下编译Mac, Linux平台的64位可执行程序:
go env -w CGO_ENABLED=0 GOOS=darwin3 GOARCH=amd64 go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
Linux下编译Mac, Windows平台的64位可执行程序:
go env -w CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
Mac下编译Linux, Windows平台的64位可执行程序:
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版本正式推荐使用。默认值为空,即go判断开不开启module的依据是看当前项目的根目录下有没有go.mod文件,当然我们也可手动更改为 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、文件服务器
4.1 filebrowser
https://github.com/filebrowser/filebrowser
4.2 gohttpserver
https://github.com/codeskyblue/gohttpserver
输入如下编译命令:
go build
生成exe文件如下:
执行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.
答:执行如下命令即可:
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 # 设置不走 proxy 的私有仓库,多个用逗号相隔 go env -w GOPRIVATE=*.corp.example.com go get -u gorm.io/gorm
结语
以上就是基于Go语言搭建静态文件服务器的详细教程的详细内容,更多关于Go搭建静态文件服务器的资料请关注脚本之家其它相关文章!