自学内容网 自学内容网

【小沐学Golang】基于Go语言搭建静态文件服务器

1、简介

https://golang.google.cn/

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、安装

https://golang.google.cn/dl/
在这里插入图片描述
在这里插入图片描述

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

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!


原文地址:https://blog.csdn.net/hhy321/article/details/143082396

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!