设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间00 现在时间00 缓存数据 对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

对自己狠一点,逼自己努力,再过几年你将会感谢今天发狠的自己、恨透今天懒惰自卑的自己。晚安!

查看: 992|回复: 3

基于Go语言搭建静态文件服务器的详细教程

[复制链接]

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:2
  • 打卡月天数:0
  • 打卡总奖励:19
  • 最近打卡:2024-01-03 13:20:12
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
25
主题
25
精华
0
金钱
106
积分
54
注册时间
2023-10-4
最后登录
2025-8-23

发表于 2024-11-26 22:36:16 | 显示全部楼层 |阅读模式
目录


  • 1、简介
  • 2、安装

    • 2.1 安装版
    • 2.2 压缩版

  • 3、基本操作

    • 3.1 go run
    • 3.2 go build
    • 3.3 go install
    • 3.4 go env
    • 3.5 go module

  • 4、文件服务器

    • 4.1 filebrowser
    • 4.2 gohttpserver
    • 4.3 goFile

  • 5、FAQ

    • 5.1 go.mod 为空
    • 5.2 超时

  • 结语

1、简介

https://golang.google.cn/
  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的开发已经是完全开放的,并且拥有一个活跃的社区。
  1. 语法简单 Go语言在自由度和灵活度上做了取舍,以此换来了更好的维护性和平滑的学习曲线。部署友好 Go静态编译后的二进制文件不依赖额外的运行环境,编译速度也非常快。交叉编译 Go仅需要在编译时简单设置两个参数,就可以编译出能在其它平台上运行的程序天然并发 Go语言对于并发的支持是纯天然的,仅需一个关键字,就可以开启一个异步协程。垃圾回收 Go有着优秀的GC性能,大部分情况下GC延时都不会超过1毫秒。丰富的标准库 从字符串处理到源码AST解析,功能强大且丰富的标准库是Go语言坚实的基础。完善的工具链 Go有着完善的开发工具链,涵盖了编译,测试,依赖管理,性能分析等方方面面。
复制代码
2、安装

https://golang.google.cn/dl/
1.png

2.jpeg


2.1 安装版

3.png


2.2 压缩版

4.png

5.png

配置环境变量:
  1. GOPATH=E:\Test\go_project
  2. GOROOT=E:\Test\go1.23.2.windows-amd64\go
  3. PATH += E:\Test\go1.23.2.windows-amd64\go\bin
复制代码
6.png

测试是否配置成功:
  1. go version
复制代码
7.png


3、基本操作


3.1 go run

编译完成并马上运行 Go 程序。go run 只支持属于 main 包的一个或多个文件作为参数,不然是不能进行编译的。
  1. go run main.go
  2. # or
  3. go run -n main.go
复制代码
8.png


3.2 go build

编译指定的源文件、软件包和其他依赖,但是不会在编译后执行二进制文件。
go build 和 go run 在编译过程中其实是差不多的,不同之处是 go build 会生成编译好二进制文件并删掉编译过程产生的临时目录。若没有-o 指定文件名,则和当前目录名一致。
  1. go build main.go
  2. # or
  3. go build -x main.go
复制代码
9.png


3.3 go install

编译并安装源文件、软件包,即把编译后的文件(可执行二进制文件、归档文件等)安装到指定的目录中。将编译后的文件(可执行二进制文件、归档文件等)安装到指定的目录中。若设置了环境变量 GOBIN ,则把二进制可执行文件移到该目录。若禁用 Go modules 则放到 G O P A T H / p k g / GOPATH/pkg/ GOPATH/pkg/GOOS_$GOARCH下。
  1. go install -x main.go
复制代码
10.png


3.4 go env

当你安装的GO的语言版本大于1.13的时候,直接使用go env -w命令就行了.
  1. go env -w GOPROXY=https://goproxy.io,direct
  2. # Set environment variable allow bypassing the proxy for selected modules
  3. go env -w GOPRIVATE=*.corp.example.com
  4. go env -w GO111MODULE=on
复制代码
使用go env环境变量在不同操作系统(Mac、Linux、Windows)之间交叉编译64位Go应用程序。通过设置CGO_ENABLED、GOOS和GOARCH,可以在本地构建目标平台的可执行文件,简化了部署流程,避免了将整个项目上传到服务器的需要。
Windows下编译Mac, Linux平台的64位可执行程序:
  1. go env -w CGO_ENABLED=0 GOOS=darwin3 GOARCH=amd64
  2. go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
复制代码
Linux下编译Mac, Windows平台的64位可执行程序:
  1. go env -w CGO_ENABLED=0 GOOS=darwin GOARCH=amd64
  2. go env -w CGO_ENABLED=0 GOOS=windows GOARCH=amd64
复制代码
Mac下编译Linux, Windows平台的64位可执行程序:
  1. go env -w CGO_ENABLED=0 GOOS=linux GOARCH=amd64
  2. 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(全部不开启,不建议):
  1. go env -w GO111MODULE=on

  2. go env -w GOPATH=D:\Golang1.19\gopath

  3. go env -w GOCACHE=D:\Golang1.19\gopath\go-build-cache
复制代码
4、文件服务器


4.1 filebrowser

https://github.com/filebrowser/filebrowser
11.jpeg


4.2 gohttpserver

https://github.com/codeskyblue/gohttpserver
12.jpeg

输入如下编译命令:
  1. go build
复制代码
生成exe文件如下:
13.png

执行exe如下:
14.png

浏览器访问如下:
15.jpeg


4.3 goFile

https://github.com/csznet/goFile
16.jpeg
  1. go build
复制代码
生成exe文件如下:
17.png

浏览器访问如下:
18.png


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.
答:执行如下命令即可:
  1. go mod init mod
复制代码
使用go env查看配置信息:
  1. go env
复制代码
19.png


5.2 超时

换个代理即可:
  1. go env -w GO111MODULE=on
  2. go env -w GOPROXY=https://goproxy.cn,direct
复制代码
  1. set GO111MODULE=on
  2. go env -w GOPROXY=https://goproxy.cn,direct
  3. # 设置不走 proxy 的私有仓库,多个用逗号相隔
  4. go env -w GOPRIVATE=*.corp.example.com
  5. go get -u gorm.io/gorm
复制代码
结语

以上就是基于Go语言搭建静态文件服务器的详细教程的详细内容,更多关于Go搭建静态文件服务器的资料请关注晓枫资讯其它相关文章!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
18
积分
16
注册时间
2022-12-26
最后登录
2022-12-26

发表于 2025-3-31 04:13:14 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
22
积分
24
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2025-9-1 22:27:06 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:343
  • 最近打卡:2025-12-03 13:03:27
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
394
积分
62
注册时间
2023-3-11
最后登录
2025-12-3

发表于 2025-11-16 22:11:10 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表