当前位置: 首页 > 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提交规范记录,常见的提交类型及模板、示例
  • 中国词学研究会原会长、华东师大教授马兴荣逝世,享年101岁
  • 公安部部署“昆仑2025”专项工作,严打环食药等领域突出犯罪
  • 七方面118项任务,2025年知识产权强国建设推进计划印发
  • 进化版大巴黎通杀英超,那个男人后悔了吗
  • 李彦宏:技术迭代速度之快从业30年来未见过,要提升执行力战胜对手
  • 8小时《大师与玛格丽特》:长度可以是特点,但不是价值标准