新闻详情

新闻详情

首页 / 资讯中心 / 详情

编写你的第一个 Go 程序:learngo 实战指南(go run / go build 完整上手)

发布时间:2026/10/1 1:55:57来源:尧图网络
编写你的第一个 Go 程序:learngo 实战指南(go run / go build 完整上手)
示例工程教程【免费下载链接】learngo❤️ 1000 Hand-Crafted Go Examples, Exercises, and Quizzes. Learn Go by fixing 1000 tiny programs.项目地址https://gitcode.com/gh_mirrors/le/learngo点击查看免费下载本文是 learngo 仓库《Write Your First Go Program》章节02-write-your-first-program的核心配套指南。你将跟随完整的命令行操作步骤从零创建、编写、运行并构建你的第一个 Go 程序并借助仓库内的注解源码与测验题目真正理解package main、import、func main、go build与go run等基础概念背后的运行机制。读完本文你不仅能独立跑通第一个程序还能掌握把程序编译成可执行文件、甚至为其他操作系统交叉编译的能力。动手之前三条最常用的命令行命令无论使用哪个操作系统编写 Go 程序都离不开在命令行终端 / PowerShell中切换目录。速查表中给出的是最基础的三条进入某个目录cd directoryPathWindows下列出当前目录文件dirOS X / Linux下列出当前目录文件ls一个典型的工作流是先用ls或dir确认当前位置再用cd进入程序目录最后执行 Go 命令。如果你还没有安装 Go 工具链可以参照仓库的 01-get-started 目录其中按操作系统提供了 OS X、Windows 和 Ubuntu 的安装指南。编写并运行你的第一个 Go 程序整个流程只需要四步建目录、写代码、运行、验证。第一步创建程序目录先新建一个目录并进入其中mkdir myDirectoryName cd myDirectoryName第二步创建源码文件 main.go用 Visual Studio Code 在当前目录下创建并打开main.go在 VSCode 中执行code main.go即可完成创建 打开两个动作把下面的代码粘贴进去并保存package main import fmt func main() { fmt.Println(Hi! I want to be a Gopher!) }这段代码正是本小节的教学示例也是整个章节的主程序原型仓库根目录下的 02-write-your-first-program/main.go 保留了它的完整带注释版本逐行解释了每一处关键结构。第三步运行程序回到命令行运行go run main.go你将看到终端输出Hi! I want to be a Gopher!。如果目录里有多个.go文件需要一并运行可以简写为go run .go run .会编译并运行当前目录下的所有 Go 源文件这在后续多文件练习中非常常用。逐行读懂你的第一个程序光能跑通还不够本小节以及配套的 annotated-go-program-example.md的价值在于让你明白每一行在做什么。逐段拆解如下// package main 是一个特殊的包 // 它让 Go 能够生成可执行文件 package mainpackage main声明本文件属于main包。main是特殊包名只有package main的程序才能被编译成可执行文件而不是可复用的库。这对应仓库测验 questions/02-code-your-first-program/README.md 中使用 package main 的目的是创建可执行的 Go 程序这一结论。// import 关键字让其他包对本 .go 文件可用 // import fmt 让你在本文件中使用 fmt 包的功能 import fmtimport fmt引入标准库fmt包之后才能调用fmt.Println这类导出函数。import只负责引入真正打印消息的是fmt.Println——测验里专门强调过这一点容易把两者混淆。// func main 是特殊的 // Go 必须知道从哪里开始执行 // 编译完成后Go 运行时首先运行这个函数 func main() { fmt.Println(Hello Gopher!) }func main是程序的入口函数。Go 会自动调用它你不需要也不应该自己调用main。这一点在 questions/02-code-your-first-program/README.md 中被反复验证Go calls the main function automatically.fmt.Println是fmt包导出的函数导出 首字母大写它把字符串打印到控制台并换行。你可以在命令行里用go doc -src fmt Println直接查看它的源码这是熟悉标准库的好方法。Go 的字符串字面量原生支持 Unicode 字符所以fmt.Println(Merhaba Köstebek!)土耳其语你好Gopher也能正常输出仓库的 main.go 中特意保留了这条注释说明。注意func main之外的其他函数Go 不会自动调用你必须显式调用它们才会执行——这是初学者最常踩的坑之一测验 questions/02-code-your-first-program/README.md 也专门就是否需要自己调用函数设问作答。go build 与 go run编译期与运行期很多新手分不清go build和go run本节的官方速查表与测验 questions/03-run-your-first-program/README.md 给出了最准确的区分命令行为产物去向go run main.go先编译再运行编译产物放在一个临时目录里运行完即消失go build main.go只编译不运行可执行文件生成在当前目录即你调用go build的目录对应的两个核心概念编译期compile-time程序被编译的阶段。这个阶段程序是死的不能打印任何消息。运行期runtime编译完成后程序真正在计算机上运行的阶段。只有在这个阶段程序才能与操作系统交互、向控制台输出内容。因此结论是go run是编译 运行的便捷通道适合开发调试go build只产出可执行文件适合发布分发。当你go build得到一个可执行文件后直接在命令行执行它如 Linux/macOS 下的./main即可运行。源码文件应该放在哪里关于 GOPATH 与 Go Modules速查表给出的答案是放在任何你喜欢的目录都可以。这在 Go Modules 成为默认的今天完全成立。不过仓库的旧版测验 questions/01-gopath/README.md 保留了早期 Go 时代的标准答案两者结合看能帮你理解 Go 工程布局的演变传统GOPATH 时代源码应放在$GOPATH/src下。GOPATH是存放 Go 源码与编译产物的目录早期需要用go env GOPATH查看且默认就在用户主目录下No: Its stored under my user path一般无需手动设置。现代Go Modulesgo 1.11只要项目根目录存在go.mod文件你就可以在任意目录下开发。本仓库根目录的 go.mod 即声明了module github.com/inancgumus/learngo与go 1.13这正是仓库各章节能随处摆放、直接go run .运行的原因。所以实际开发中在一个独立的项目目录下创建程序目录内有go.mod即按模块方式工作没有go.mod的极简练习文件用go run main.go或go build main.go也能直接编译运行。把程序分享给朋友交叉编译实战go build产出的可执行文件与操作系统强相关。要把程序发给使用不同操作系统的朋友需要做交叉编译——即在本机为对方的目标平台编译。仓库练习 exercises/README.md 给出了现成的三组命令# 生成 macOS (OS X) 可执行文件 GOOSdarwin GOARCH386 go build # 生成 Windows 可执行文件 GOOSwindows GOARCH386 go build # 生成 Linux (ARM 平台如树莓派) 可执行文件 GOOSlinux GOARCHarm GOARM7 go build几个实操要点GOOS指定目标操作系统GOARCH指定目标 CPU 架构386为 32 位 x86amd64为 64 位 x86GOARM7用于指定 ARM 版本。若在 Windows 的命令提示符或 PowerShell 中执行需要写成cmd /c set GOOSdarwin GOARCH386 go build。如果接收方与你使用同一操作系统则直接go build后发送即可无需交叉编译。查看当前 Go 工具链支持的全部GOOS/GOARCH组合可以在命令行运行go tool dist list。交叉编译时可在命令中显式给出输出文件名如go build -o hello.exe避免混淆产物归属。通过练习巩固打印你的名字理论讲完立刻动手。本小节的官方练习是 exercises/README.md第一题Print names的初始代码在 exercises/01-print-names/main.gopackage main func main() { // ? // ? }任务是用两次Println分别打印你的名字和你最好朋友的名字。参考答案注意需要补上import fmt位于 exercises/01-print-names/solution/main.gopackage main import fmt // go run main.go // go build // ./solution func main() { fmt.Println(Nikola) fmt.Println(Thomas) }练习文档还建议你依次尝试这些破坏性实验从而真正理解语法规则把Println换成Print观察输出差异Print不换行。用逗号分隔向Println/Print一次传入多个值。去掉字符串两边的双引号观察编译错误。把package和import语句挪到文件底部观察编译结果。用go build构建程序并直接运行生成的可执行文件体会与go run的差别。常见误区速查来自章节测验本章节的测验文件questions/02-code-your-first-program/README.md 与 questions/03-run-your-first-program/README.md浓缩了初学者最常犯的认知错误这里汇总成一张自查表问题正确认知定义包用什么关键字packagefunc是声明函数用的import fmt是打印消息吗不是它只是引入fmt包打印靠fmt.Println需要自己调用main函数吗不需要Go 会自动调用main作为程序入口其他函数会被自动调用吗不会除main外的函数必须显式调用只有package mainfunc main()、没有打印语句的程序正确吗正确只是什么都不输出fmt.Println(Hi! I want to be a Gopher!)能编译吗不能——字符串必须加双引号且未导入fmt打印消息发生在编译期还是运行期运行期编译期程序无法与外界交互结语从mkdir建目录到code main.go写代码再到go run main.go运行、go build构建、甚至用GOOS/GOARCH交叉编译分发——你已经走完了 Go 入门最关键的第一公里。本小节的速查表02-write-your-first-program/README.md建议你将本文保存为笔记配合视频课程逐步消化。接下来可以进入 03-packages-and-scopes 章节深入包与作用域的奥秘。赞分享示例工程教程【免费下载链接】learngo❤️ 1000 Hand-Crafted Go Examples, Exercises, and Quizzes. Learn Go by fixing 1000 tiny programs.项目地址https://gitcode.com/gh_mirrors/le/learngo点击查看免费下载相关推荐Go-Questions编译命令go build、go run等命令的深度解析Go Questions编译命令go build、go run等命令的深度解析 Go语言作为现代编程语言的代表其编译系统设计精巧而高效。对于Go开发者来说文档教程MCP Go SDK 快速上手用 Go 构建你的第一个 MCP Server 与 ClientMCP Go SDK 快速上手用 Go 构建你的第一个 MCP Server 与 Client 本文基于官方 Model Context Protocol GMCP 服务AI Agent工具调用90DaysOfDevOps深入理解 Go Workspace 与 go build / go install / go run 编译运行机制90DaysOfDevOps深入理解 Go Workspace 与 go build / go install / go run 编译运行机制 本篇指南源自文档/教程上一篇【亲测免费】 scribd-downloader一键下载Scribd电子书轻松打造个人图书馆下一篇【0基础秒入门】YOLOv12 项目使用教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

运动模糊的本质与量化控制:从物理原理到工程实践 2026/10/1 2:43:52

运动模糊的本质与量化控制:从物理原理到工程实践

1. 运动模糊不是“糊”,而是光与时间的精确契约你有没有拍过跑步的人,结果照片里人影拉出一道虚线?有没有录过快速挥动的球拍,回放时发现球体边缘像被橡皮擦蹭过一样发毛?甚至用手机扫二维码,手一抖&#x…

阅读更多 →
DO-160G 射频敏感度试验:如何规避空域电磁干扰故障 2026/10/1 2:43:51

DO-160G 射频敏感度试验:如何规避空域电磁干扰故障

很多低空无人机、eVTOL机载设备存在一个顽固疑难问题:地面单独测试电磁抗扰完全合格,一旦进入复杂空域飞行,就出现导航偏移、图传卡顿、飞控数据跳变、传感器参数漂移,排查硬件、程序、装配均无异常,最终问题根源大多指…

阅读更多 →
MATLAB实现人脸五官检测:基于Haar特征与级联分类器实战 2026/10/1 2:43:44

MATLAB实现人脸五官检测:基于Haar特征与级联分类器实战

简介:这是一份基于计算机视觉检测人脸、眼睛、鼻子和嘴的MATLAB实现源码,面向图像处理初学者及计算机视觉入门者,可帮助你从零搭建面部特征定位的小型实验。压缩包共2个文件,包含一个.m脚本和一份.docx说明文档,整体仅…

阅读更多 →
通达CMS服装网站系统源码解析:从环境搭建到二次开发实战 2026/10/1 2:43:44

通达CMS服装网站系统源码解析:从环境搭建到二次开发实战

简介:这份资源是通达CMS服装公司网站系统的整站PHP源码,面向具备一定PHP与MySQL基础的Web开发者,用于快速搭建服装行业的内容管理与展示平台。压缩包共1154个文件,约6.51MB,以488个php业务脚本、129个html页面、68个js…

阅读更多 →
通达CMS服装公司网站系统整站源码:PHP整站快速建站与二次开发实战 2026/10/1 2:43:44

通达CMS服装公司网站系统整站源码:PHP整站快速建站与二次开发实战

简介:这份资源是通达CMS服装公司网站系统的整站PHP源码,面向具备一定PHP与MySQL基础、希望快速搭建服装行业专业站点的开发者与建站学习者。它提供从前端展示、后台管理到数据库设计的完整解决方案,可用于二次开发、CMS架构学习或企业建站参考…

阅读更多 →
Gitee企业级项目管理实战:从仓库创建到流水线落地的本土化方案 2026/10/1 2:43:37

Gitee企业级项目管理实战:从仓库创建到流水线落地的本土化方案

国内做代码托管和项目管理的团队,近几年基本绕不开一个名字——Gitee。很多人对它的第一印象是“国产开源平台”,但真把企业级项目管理这套东西搬上去之后,你会发现它在网络延迟、合规备案、内网部署、生态集成这些环节上的表现,和…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉