当前位置: 首页 > 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,可以手机在局域网内控制电脑基本操作等等,敬请期待~

http://www.xdnf.cn/news/188425.html

相关文章:

  • 大语言模型(LLMs)微调技术总结
  • web 基础与 http 协议
  • 【JAVA ee初阶】多线程(3)
  • es+kibana---集群部署
  • MYOJ_1349:(洛谷P3951)[NOIP 2017 提高组] 小凯的疑惑(数学公式套用,两步搞定代码)
  • 快速上手QEMU:创建你的第一个虚拟机实例
  • 深入浅出限流算法(一):简单但有“坑”的固定窗口计数器
  • 大数据应用开发和项目实战
  • 第五章、SpringBoot与消息通信(三)
  • 线性代数——行列式⭐
  • 任意波形发生器——2路同步DA模拟量输出卡
  • 项目管理 - 1.Maven
  • [特殊字符] SpringCloud项目中使用OpenFeign进行微服务远程调用详解(含连接池与日志配置)
  • stm32week13
  • Swiper 在 Vue 中的使用指南
  • 02《小地图实时》Unity
  • 榕壹云信用租赁系统:基于ThinkPHP+MySQL+UniApp的全链路免押租赁解决方案
  • [ACTF2020 新生赛]Include [ACTF2020 新生赛]Exec
  • 基于ffmpeg的音视频编码
  • 电路研究9.3.2——合宙Air780EP中的AT开发指南:HTTP(S)-PDP的研究
  • 【图论 拓扑排序 bfs】P6037 Ryoku 的探索|普及+
  • SpeedyAutoLoot
  • DeepSeek+Dify之五工作流引用API案例
  • 在自动驾驶数据闭环中的特征工程应用
  • VSCode 查看文件的本地修改历史
  • 大模型(LLMs)加速篇
  • Ubuntu 20.04 上安装 最新版CMake 3.31.7 的详细步骤
  • MongoDB的增删改查操作
  • 如何搭建spark yarn模式的集群
  • vite项目tailwindcss4的使用