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

Go 语言入门笔记(一):从零搭环境到跑通第一个程序

最近因为项目里开始用 Go 写一些高并发的服务,再加上面试的时候发现不少岗位都要求“熟悉 Go 语言”,索性就趁这个机会从头系统地学一遍。输出倒逼输入,边学边记,这系列笔记就当是我的公开学习日志了。第一篇就从最基础的环境搭建开始,目标是跑通一行Hello, World


1. 装 Go:省心的方法和踩过的坑

1.1 官方下载(推荐)

直接去 Go 官网的下载页面下载对应系统的安装包,目前最新稳定版是 go1.22。Windows 下双击.msi一路下一步就行,Mac 可以用.pkg,Linux 下直接解压tar.gz放到/usr/local

我当时图省事在 Ubuntu 上直接apt install golang-go,结果版本巨老,连 modules 支持都不太完善,后来又乖乖去官网下了二进制包。建议一定用官方渠道,版本至少 go1.18 以上,因为后面讲的泛型、工作区这些新特性老版本根本不支持。

1.2 环境变量到底怎么设

装完之后,安装程序一般会自动把 Go 的 bin 目录加到PATH里,没加的话可以手动加一下:

# 类 Unix 系统加到 ~/.bashrc 或 ~/.zshrc export PATH=$PATH:/usr/local/go/bin

然后聊几个容易迷糊的环境变量:

  • GOROOT:Go 语言的安装路径。现在基本不用手动设了,Go 自己知道。
  • GOPATH:老版本里必须设的工作目录,现在有了 Go Modules 之后,这个变量更多是用来存放go get下载的依赖和工具,一般默认为~/go

验证一下安装成果:

go version go env GOROOT GOPATH GOPROXY

输出版本号和路径就没问题了。


2. 第一个程序:Hello World 的正确打开方式

2.1 新建项目目录

习惯用 Modules,所以不会像以前那样必须在$GOPATH/src下创建代码。随便找个地方,新建个文件夹就行。

mkdir hello-go && cd hello-go

2.2 初始化模块

虽然不是必须的,但我建议从一开始就用 module 管理,哪怕只有一个文件。

go mod init hello

这会生成一个go.mod文件,内容很简单:

module hello go 1.22

2.3 写代码

新建main.go

package main import "fmt" func main() { fmt.Println("Hello, 世界") }

2.4 跑起来

两种方式:

  • go run main.go:编译并运行,适合开发调试,但会留下临时文件。

  • go build:生成可执行文件(Linux 下是hello,Win 下是hello.exe),再运行。

第一次跑看到控制台打出Hello, 世界的时候,有种重新学编程的奇妙兴奋感。


3. 这五行代码到底干了啥

老鸟可以跳过,新手朋友建议瞄一眼:

  • package main:定义一个主包,可执行程序必须叫main包。

  • import "fmt":导入格式化 I/O 包,用来打印东西。

  • func main():程序的入口函数,没有参数,没有返回值,必须是main包的main函数,和 C 一样。

  • fmt.Println:打印一行,自动加换行。大写字母开头的函数才能被外部使用,也就是“导出”规则,这个后面会反复提到。

这里有个我当时犯的傻:把文件名起成了main_test.go,结果go run死活不认,因为 Go 把_test.go结尾的文件当成测试文件了。


4. 下一步学什么

环境好了,程序也跑通了。下一章准备梳理 Go 的变量声明那套“反直觉”的语法,什么var:=、多变量赋值这些,特别是和 C/Java 习惯打架的地方,我会把踩坑过程记下来。

如果这篇文章对你有帮助,欢迎点赞收藏,也欢迎在评论区纠正我理解不到位的地方,一起扎实学下去。

http://www.cnnetsun.cn/news/4026048.html

相关文章:

  • Windows 11 越来越卡?Win11Debloat 一键系统优化与隐私清理终极指南
  • 流放之路价格查询终极助手:这款免费开源工具,5分钟告别手动比价
  • 猫抓资源嗅探扩展使用路线图:3个成长阶段,把网页视频音频图片全拿下
  • 不用模拟器也能在 Windows 上装安卓应用:APK Installer 三步入门指南
  • 动态规划专练:力扣第1035、392题
  • 十大最佳 AI 编码工具
  • 混合办公两难:视频会议私有化部署频频失守的真相
  • 第一次让 AI 帮你写代码:用 JavaScript 完成一个待办事项清单
  • C语言基础:操作符详解(一)
  • 中级开发者用 AI,最容易掉进的 5 个坑
  • 从Cursor到多智能体:2026年AI全栈开发工具到底该怎么选?
  • 误删、格式化、硬盘罢工之后:TestDisk与PhotoRec免费数据恢复工具完整自救手册
  • 微信投票活动全攻略:从选工具到落地执行
  • maxGraph图表库实战:几分钟上手,从零构建可交互的流程图应用
  • WebPShop 插件完整使用指南:Photoshop 导出 WebP 与制作动画的免费教程
  • 从技术骨干到管理者,最大的转变不是能力,是角色和逻辑
  • 技术解析|音频分割在哪里切才不爆音?过零点与淡入淡出的四个关键细节
  • Windows 10/11 窗口毛玻璃特效实操指南:效果怎么选、怎么落地一次讲透
  • G-Helper完整上手指南:10分钟掌握华硕笔记本的功耗、风扇与显卡控制
  • 算法(23):heapsort-8.3一种先构建再排序的排序方法
  • 测试开发学习中。。。。
  • 基于linux上的终端贪吃蛇
  • 【论文翻译】SCNET: SPARSE COMPRESSION NETWORK FOR MUSIC SOURCE SEPARATION
  • 华硕笔记本控制工具G-Helper打不开?完整启动排查手册:5招让双击重新有反应
  • Socket编程:客户端与服务器通信全解析(网络编程)
  • 如何为Cocos Creator +微信小游戏项目建立一套可长期执行的性能治理体系?
  • SAP Task Gateway 扩展实战,如何为统一任务入口增加新的 Provider
  • Win11Debloat实测:半小时卸载预装软件、关闭遥测,新电脑终于不卡了
  • 性能优化:连接池、缓存、批量处理
  • 开源的报文分析平台:12 个规则库全接引擎,附在线体验