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

 更新时间:2024年10月21日 09:33:39   作者:爱看书的小沐  
Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易,本文给大家介绍了基于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

结语

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

相关文章

  • golang 基于 mysql 简单实现分布式读写锁

    golang 基于 mysql 简单实现分布式读写锁

    这篇文章主要介绍了golang 基于mysql简单实现分布式读写锁,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 一文教你如何快速学会Go的切片和数组数据类型

    一文教你如何快速学会Go的切片和数组数据类型

    数组是属于同一类型的元素的集合。切片是数组顶部的方便、灵活且功能强大的包装器。本文就来和大家聊聊Go中切片和数组的使用,需要的可以参考一下
    2023-03-03
  • Go构建器模式构建复杂对象方法实例

    Go构建器模式构建复杂对象方法实例

    本文介绍了构建器模式,如何通过构建器对象构建复杂业务对象的方法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go语言中两个比较流行的缓存库使用示例

    Go语言中两个比较流行的缓存库使用示例

    缓存是计算机科学中的一个重要概念,设想某个组件需要访问外部资源,它向外部源请求资源,接收并使用资源,这些步骤都需要花费时间,下面这篇文章主要给大家介绍了关于Go语言中两个比较流行的缓存库使用的相关资料,需要的朋友可以参考下
    2024-04-04
  • Golang在Mac、Linux、Windows下如何交叉编译的实现

    Golang在Mac、Linux、Windows下如何交叉编译的实现

    这篇文章主要介绍了Golang在Mac、Linux、Windows下如何交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Golang 操作TSV文件的实战示例

    Golang 操作TSV文件的实战示例

    本文主要介绍了Golang 操作TSV文件的实战示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 在 Go 语言中使用 regexp 包处理正则表达式的操作

    在 Go 语言中使用 regexp 包处理正则表达式的操作

    正则表达式是处理字符串时一个非常强大的工具,而 Go 语言的 regexp 包提供了简单而强大的接口来使用正则表达式,本文将介绍如何在 Go 中使用 regexp 包来编译和执行正则表达式,以及如何从文本中匹配和提取信息,感兴趣的朋友一起看看吧
    2023-12-12
  • Go json omitempty如何实现可选属性

    Go json omitempty如何实现可选属性

    在Go语言中,使用`omitempty`可以帮助我们在进行JSON序列化和反序列化时,忽略结构体中的零值或空值,本文介绍了如何通过将字段类型改为指针类型,并在结构体的JSON标签中添加`omitempty`来实现这一功能,例如,将float32修改为*float32
    2024-09-09
  • golang flag简单用法

    golang flag简单用法

    本篇文章介绍了golang flag包的一个简单的用法,希望通过一个简单的实例,能让大家了解它的用法,从中获得启发
    2018-09-09
  • golang使用http client发起get和post请求示例

    golang使用http client发起get和post请求示例

    这篇文章主要介绍了golang使用http client发起get和post请求示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论