当前位置: 首页 > news >正文

Go 语言入门:(一) 环境安装

一、前言

这里不同于其他人的 Go 语言入门,环境安装我向来注重配置,比如依赖包、缓存的默认目录。因为前期不弄好,后面要整理又影响这影响那的,所以就干脆写成文章,方便后期捡起。

二、安装

1. 安装包
https://go.dev/dl/
https://golang.google.cn/dl/
2. 操作

将 msi 安装到指定位置, D:\Go\bin 添加到环境变量 path

3. 验证

cmd 输入 go version 查看版本号,go run test.go 执行脚本

三、环境配置

1. 查看 Go 变量
go env
2. 修改环境配置

通过上面命令查看基本默认配置后,这里就是用来修改 go 运行的缓存位置,模块安装位置。

go env -w GOMODCACHE=E:\2setsoft\2tool\go\ENV\go_modcache

四、项目创建

1. 基本目录
src 目录存放源代码。
pkg 目录存放编译后的包。
bin 目录存放编译后的可执行文件。
2. 初始化 Go 模块

在项目目录中运行 go mod init 命令来初始化一个新的 Go 模块。你需要提供一个唯一的模块路径,通常是代码仓库的 URL。

生成一个 go.mod 文件,用于记录项目的依赖关系,初始化时只有一个 go 版本,当 go get 下载了依赖包后,会自动在 go.mod 文件中记录依赖包的版本号,并生成.sum 文件。

go mod init myfirstgo
3. 添加依赖

如果你的项目需要使用第三方库,可以使用 go get 命令来添加依赖。例如,如果你想使用 github.com/gin-gonic/gin 这个库,可以运行:

go get fyne.io/fyne/v2/app

这将自动更新 go.mod 文件,添加相应的依赖项。

4. 编写 Go 程序

根目录下创建 main.go 文件并编写你的 Go 程序。以下是一个简单的示例代码,它将输出 “Hello, World!”:

package main
​
import "fmt"
​
func main() {fmt.Println("Hello, World!")
}
5. 运行 Go 程序

在项目目录中,使用 go run 命令来编译并运行你的 Go 程序:

go run main.go
6. 构建 Go 程序 (打包 exe)

(1). 进入当前目录

(2). 输入命令 go run main.go

(3). 不打开 GUI 黑框的打包命令

go build -ldflags="-H=windowsgui" -o download_tool.exe  main.go

(4). 直接编译打包运行,有黑框

go build -o download_tool.exe main.go

五、附加

1. 单元测试

Go 提供了简单的单元测试框架。你可以在项目中添加测试文件,文件名通常以 _test.go 结尾。例如,创建一个 main_test.go 文件:

package main
​
import ("testing"
)
​
func TestHelloWorld(t *testing.T) {expected := "Hello, World!"actual := "Hello, World!"if actual != expected {t.Errorf("Expected %q, but got %q", expected, actual)}
}
2. 格式化代码

Go 提供了 gofmt 命令来格式化代码,使其符合 Go 的代码风格规范:

gofmt -w .

这将自动格式化项目目录下的所有 Go 文件。

3. 打包程序不退出

编写的 Go 程序,为了让其打包后 exe 应用启动后不退出,可以这样处理:

fmt.Println("按回车键退出……")fmt.Scanln()
4.AI 编程助手

在 VsCode 安装 Fitten Code 后,点击左上角工具栏中的 Fitten Code – 开始对话或者使用快捷键 Ctrl+Alt+C。

六、写在后面

写完环境搭建,后面可能是用 Go 来做一些小工具,比如批量的文件图片下载器,office 批量转 pdf,可以手机在局域网内控制电脑基本操作等等,敬请期待~

相关文章:

  • uniapp 微信小程序遇到的坑
  • 8.Three.js中的 StereoCamera 立体相机详解+示例代码
  • 鼠标获取坐标 vs 相机获取坐标
  • Vue 2 和 Vue 3 中 Vue 实例变量方法的功能差异对比,包含关键方法的详细说明和表格总结
  • 网工备考考纲变化总结
  • ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
  • 详解RabbitMQ工作模式之工作队列模式
  • 定时器的源码介绍与简单实现——多线程编程简单案例[多线程编程篇(5)]
  • Java方法执行机制与入口点实现深度解析
  • HarmonyOS SDK助力鸿蒙版今日水印相机,真实地址防护再升级
  • 第36课 常用快捷操作——用“鼠标右键”退出当前命令
  • RestRequest ,newtonsoft解析
  • 在VS2022中使用Lua与c交互(二)
  • 佛山大旺高新区3650 M5 ERP服务器维修案例
  • 服务器部署flask
  • 第十四章-PHP与HTTP协议
  • 微信聊天机器人搭建 教程/开发
  • 12前端项目----添加购物车1.0
  • 基于 SpringBoot 与 Redis 的缓存预热案例
  • git提交规范记录,常见的提交类型及模板、示例
  • 江苏银行一季度净赚近98亿增逾8%,不良贷款率微降
  • 幸福航空五一前三天航班取消:客服称目前是锁舱状态,无法确认何时恢复
  • 安阳一村支书微信群骂村民被警方行拘,辩称对方先“污蔑造谣”
  • 央行副行长:增强外汇市场韧性,坚决对市场顺周期行为进行纠偏
  • 体坛联播|利物浦提前4轮夺冠,安切洛蒂已向皇马更衣室告别
  • 伊朗最大港口爆炸:26公里外都能听到,超七百人受伤,原因指向化学品储存