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

文章目录

  • 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/

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=ongo env -w GOPATH=D:\Golang1.19\gopathgo 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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454438.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word表格跨页后自动生成的顶部横线【去除方法】

Hello World! Its been a long time. 这一年重心放在了科研、做事、追寻新的经历上,事有正事、琐事、幸事、哀事,内心与认知成长了一些,思想成熟了几分,技艺也有若干收获。不管怎样,来打个卡吧,纪念一下&…

Web前端高级工程师培训:使用 Node.js 构建一个 Web 服务端程序(3)

11、HTTP 协议 11-1、协议的定义 HTTP 是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。一个完整的Web文档通…

Tailwind Starter Kit 一款极简的前端快速启动模板

Tailwind Starter Kit 是基于TailwindCSS实现的一款开源的、使用简单的极简模板扩展。会用Tailwincss就可以快速入手使用。Tailwind Starter Kit 是免费开源的。它不会在原始的TailwindCSS框架中更改或添加任何CSS。它具有多个HTML元素,并附带了ReactJS、Vue和Angul…

Docker安装Mysql5.7,解决无法访问DockerHub问题

Docker安装Mysql5.7,解决无法访问DockerHub问题 简介 Docker Hub 无法访问,应用安装失败,镜像拉取超时的解决方案。 摘要 : 当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的…

使用爬虫爬取Python中文开发者社区基础教程的数据

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

微信小程序文本收起展开

这里写自定义目录标题 微信小程序文本收起展开常见问题的梯形背景框 微信小程序文本收起展开 参考 https://juejin.cn/post/6963904955262435336 <!-- 常见问题解答 --><view classcontentBottom><view classBottomFirst><text id0 data-id0 class&quo…

python + mitmproxy 爬手机app (1)

起因&#xff0c; 目的: 想爬手机上某鱼。 mitmproxy 简介: 一句话: mitmproxy 就是中间人攻击. (只不过&#xff0c; 你安装&#xff0c;就代表你愿意承担风险。)源码&#xff1a;https://github.com/mitmproxy/mitmproxy文档: https://mitmproxy.org/ 安装过程: 见聊天记…

eCAP超声波测距-ePWM电机调速

目录 eCAP超声波测距 整体框架 关键模块 实验效果 PWM电机调速 DRV8833基本介绍 整体框架 eCAP超声波测距 本实验所用的超声波HC-SR04模块如下图所示&#xff0c;左边为正面图&#xff0c;右边为反面图。 HC-SR04基本工作原理&#xff1a; &#xff08;1&#xff09;采…

spring源码中的,函数式接口,注解@FunctionalInterface

调用方 /org/springframework/beans/factory/support/AbstractBeanFactory.java:333sharedInstance getSingleton(beanName, () -> {try {return createBean(beanName, mbd, args);}catch (BeansException ex) {// Explicitly remove instance from singleton cache: It mi…

Kafka之消费者客户端

1、历史上的二个版本 与生产者客户端一样&#xff0c;在Kafka的发展过程当中&#xff0c;消费者客户端主要有两个大的版本&#xff1a; 旧消费者客户端&#xff08;Old Consumer&#xff09;&#xff1a;基于Scala语言开发的版本&#xff0c;又称为Scala消费者客户端。新消费…

rpm 命令

rpm&#xff08;Red Hat Package Manager&#xff09;是 Red Hat Linux 及其衍生发行版&#xff08;如 CentOS、Fedora&#xff09;中用于管理软件包的系统。它允许用户安装、卸载、升级、查询和验证软件包。 一、安装软件包 &#xff08;1&#xff09;安装一个 RPM 软件包&a…

高并发下如何保证接口的幂等性?

前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。 不知道你有没有遇到过这些场景: 有时我们在填写某些form表单时,保存按钮不小心快速点了两次…

十二、【智能体】深入剖析:大模型节点的全面解读,举例说明,教你如何在扣子中嵌入代码

大模型节点 大模型节点主要分为5部分&#xff1a; 处理类型 单次批处理 模型类型&#xff1a;目前可以选择的模型有 豆包、通义千问、智谱、MinMax和Kimi输入:此时的参数可以被下面的提示词所用提示词&#xff1a;给大模型使用的提示词输出&#xff1a;经过此大模型处理后的输…

Vehicle Spy3.9如何新建工程—总览

1&#xff1a;写作目的 学习和精通SPY的使用&#xff0c;对于spy&#xff0c;目前主要是通用系用的比较多&#xff0c;本身spy的生产厂家英特佩斯也是美国的公司&#xff0c;除了软件自带教程。中文网上很少能找到相关的中文教程。 故写下这篇文章&#xff0c;帮助自己和大家…

Ubuntu(22.04)本地部署Appsmith

Ubuntu&#xff08;22.04&#xff09;安装Appsmith 简要介绍 Appsmith 是一个开源的低代码开发平台&#xff0c;旨在帮助开发者和非开发者快速构建定制化的内部应用程序和管理工具。通过直观的拖拽界面和丰富的预配置组件&#xff0c;Appsmith 让用户无需编写大量代码即可创建…

软件工程的学习之详细绪论

软件的定义 软件是程序和所有使程序正确运行所需要的相关文档和配置信息。 Software Program Data Document 一、软件危机&#xff1a; 软件开发和维护过程中遇到的一系列严重问题。 二、具体表现&#xff1a; 1、产品不符合用户的实际需要&#xff1b; 2、软件开发生产率…

Sigrity 共模电感的S-parameter仿真数据导入

下载S4P参数 https://ds.murata.co.jp/simsurfing/cmcc.html?partnumbers%5B%22DLW32MH101XT2%22%5D&oripartnumbers%5B%22DLW32MH101XT2L%22%5D&rgearjomoqke&rgearinfocom&md51729525489334# 下载S4P参数&#xff1b; DLW32MH101XT2.s4p Sigrity 使用-dif…

Mac电脑:资源库Library里找不到WebServer问题的解决

今天看到一本书里写到Windows电脑自带IIS Web服务器&#xff0c;好奇了一下下&#xff0c;mac电脑自带的又是什么服务器呢&#xff1f;经查询&#xff0c;原来是Apache服务器&#xff0c;这个名字我很熟悉。只是如何设置呢&#xff1f;我从来没用过&#xff0c;于是试验了一番。…

如何看待AI技术的应用前景?

人工智能&#xff1a;引领未来的变革力量 在当今快速变化的科技时代&#xff0c;人工智能&#xff08;AI&#xff09;作为一项前沿技术&#xff0c;已然成为推动全球各行各业变革的核心驱动力。随着人工智能技术的不断发展&#xff0c;其广泛的应用前景和深远的影响力&#xf…

Lua环境安装

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua是一种轻量级、小巧且易于嵌入应用程序的脚本语言&#xff0c;广泛用于游戏开发、Web开发、自动化脚本等领域。本文将详细介绍如何在不同操作系统上安装L…