- Go语言从入门到精通
- 明日科技编著
- 7120字
- 2024-12-31 22:41:14
第1章 初识Go语言
Go语言的主要设计者有3个人,他们都是计算机科学领域的杰出人物,即肯·汤普森(Ken Thompson)、罗伯·派克(Rob Pike)和罗伯特·格利茨默(Robert Griesemer)。为了避开在C++开发中等待编译完成的过程,并满足谷歌的需求,他们凭借各自的经验和智慧,耗时两年设计出Go语言,并让Go语言具备了动态语言的便利性。
本章的知识架构及重难点如下。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P14_3139.jpg?sign=1739341569-D7miTIweaGoTfwwUKYEP2vRaRNROtFjY-0-6d85b2bad17c7ef598df16b97f79a2ef)
1.1 Go语言简介
Go语言(又称Golang)起源于2007年,正式对外发布于2009年。开发Go语言是为了在不损失应用程序性能的前提下降低代码的复杂性。Go语言是类C语言,而且是经过重大改进的类C语言。Go语言继承了C语言的表达式、基础数据类型、调用参数传值、指针等。此外,Go语言具有很好的编译后机器码的运行效率,并且它有与现有操作系统的无缝适配等特性。使用Go语言不仅能够访问底层操作系统,还能够进行网络编程和并发编程。了解了上述关于Go语言的概括内容后,下面开始学习Go语言。
1.1.1 为什么要学习Go语言
Go语言没有类和继承的概念,这与Java或C++不同。此外,Go语言具备清晰易懂的轻量级类型系统,使其在类型之间没有层级关系。这是因为设计者在设计Go语言时,同时借鉴了Pascal语言、Oberon语言和C语言,并取其精华。因此,Go语言是一门混合型的编程语言。
Go语言不仅具有Python等动态语言的开发速度,而且具备C、C++等编译型语言的性能和安全性,还具备“部署简单、并发性良好、语言设计良好、执行性能好”等优势。
在Go语言正式对外发布之前,如果需要编写系统程序或者网络程序,那么开发者经常面临这样一个问题:是使用执行效率高、编译速度较慢的C++,还是使用编译速度快、执行效率较低的.NET或者Java,抑或是使用一门开发难度低、执行效率一般的动态编程语言呢?
在Go语言正式对外发布之后,开发者发现Go语言能够在编译速度、执行效率和开发难度上找到很好的平衡点,进而达到“快速编译,高效执行,易于开发”的目的。
Go语言使用自带的编译器编译代码。编译器将源代码编译成二进制(或字节码)格式;在编译代码时,编译器检查错误、优化性能并输出可在不同平台上运行的二进制文件。Go语言支持交叉编译,例如,在Linux系统的计算机上使用Go语言能够开发可以在Windows系统的计算机上运行的应用程序。这使得Go语言成为一门跨系统平台的编程语言。
1.1.2 Go语言的特性
明确Go语言的设计初衷后,下面具体介绍Go语言的主要特性。
语法简单
Go语言的语法规则严谨,没有歧义,没有变异用法,这使每位开发者编写的代码都大致相同,让应用程序具有良好的可维护性。
并发模型
Go语言从根本上让一切都并发化。在运行Go语言应用程序时,使用goroutine运行一切。goroutine是Go语言的重要特征。goroutine让Go语言通过语法实现并发编程变得更容易,无须处理回调,而且不用关注线程切换。
内存分配
将一切并发化带来一个难题:如何实现高并发下的内存分配和管理,为此,Go语言使用为并发而设计的高性能内存分配组件tcmalloc。
标准库
Go语言标准库极其丰富,在不借助第三方扩展插件的情况下,能够完成大部分基础功能的开发工作。此外,Go语言还拥有许多优秀的第三方资源,这让Go语言从近年来几门新出现的编程语言中脱颖而出。
工具链
完整的工具链对于日常开发极为重要。Go语言无论是在编译、格式化、错误检查、帮助文档等方面,还是在第三方包下载、更新等方面都有对应的工具。
1.1.3 Go语言与并发
早期的CPU都是以单核的形式顺序执行机器指令的。顺序是指所有的指令都以串行的方式执行,在同一时刻有且仅有一个CPU在执行机器指令。随着处理器由单核时代向多核时代发展,编程语言也逐步向并发的方向发展。
Go语言就是在时代发展的背景下产生的支持并发的一门编程语言。Go语言从底层原生支持并发,开发者无须使用第三方库就能够轻松地在编写程序时分配CPU资源。
Go语言是在goroutine的基础上实现并发的。goroutine被视为一种虚拟线程,但goroutine不是线程。Go语言在运行应用程序时会参与调度goroutine,把goroutine合理地分配给每个CPU,进而最大限度地使用CPU。
在多个goroutine之间,Go语言使用通道(channel)进行通信(通道是一种内置的数据结构)。也就是说,Go语言使用通道能够在不同的goroutine之间同步发送消息。
如果把并发设计为生产者和消费者的模式,那么就要把在不同goroutine之间同步发送的消息放入通道,把并发设计为生产者和消费者的模式如图1.1所示。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P16_3165.jpg?sign=1739341569-swidlev7tp8xIDHg8tP8UiNittm3Adxt-0-cf20fa7ff9396bd34409c022a4a9b456)
图1.1 把并发设计为生产者和消费者的模式
1.1.4 Go语言的应用
Go语言从发布1.0版本以来,因其简单、高效、并发的特性受到广大开发者的关注,进而被广泛使用。鉴于Go语言的设计初衷和特性,其主要应用领域如下。
服务器编程。如处理日志、数据打包、虚拟机处理、文件系统等。
分布式系统、数据库代理、中间件等。
网络编程。如Web应用、API应用、下载应用等。Go语言非常适合完成网络并发服务,在这个领域内被广泛应用;其内置的net/http包基本上把日常应用程序开发所需的网络功能都实现了。
数据库操作。
云平台领域。Go语言发布后,很多公司(尤其是云计算公司)开始用它重构云平台的基础架构,如阿里中间件、聚美优品、斗鱼直播、人人车、招财猫、美餐网等。
1.2 Go语言开发环境
搭建Go语言的开发环境要在Go语言的官网上下载Go语言开发包。Go语言开发包可以安装在Linux系统、FreeBSD系统、Mac OS系统和Windows系统上。本节将以Windows系统为例,讲解搭建Go语言开发环境的具体步骤。
1.2.1 下载Go语言开发包
打开浏览器,输入网址https://golang.google.cn/dl/后按Enter键,即可打开如图1.2所示的Go语言官网首页。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P17_3182.jpg?sign=1739341569-IZZWvbm5uTonFojoIsMGRgm9o1bKwYET-0-35a6292cee747a1feaf0f6f0ae1fcc9c)
图1.2 Go语言官网的下载页面
说明
因为Go语言官网持续更新,并且通常更新的版本会向下兼容,所以读者根据自己的计算机系统下载最新版本的Go语言开发包即可。
笔者当前的CPU系统是64位Windows系统,所以要下载64位的Go语言开发包。单击图1.2中使用矩形边框标记的超链接,弹出如图1.3所示的“新建下载任务”对话框,笔者把64位Go语言开发包下载到D:\GO路径下,单击“下载”按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P17_3208.jpg?sign=1739341569-SQxH3dzuF610LD0XBDV8QrkRAfQEecCQ-0-82f31ec1f59e64ee3f27c49c3b887324)
图1.3 “新建下载任务”对话框
说明
如果当前CPU系统是32位Windows系统,那么就需要下载能够安装在32位Windows系统上的Go语言开发包。使用鼠标滚轮向下滚动Go语言官网的首页,找到与64位Windows系统同版本的32位Windows系统的Go语言开发包,单击如图1.4所示的超链接即可。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P18_3247.jpg?sign=1739341569-Zl9FbrAIxh77OP8mVG2W18m4ICNywjmr-0-3e63c5f9adb398280129b6df3f0a3583)
图1.4 32位Windows系统的Go语言开发包
1.2.2 安装Go语言开发包
按照下载路径D:\GO,即可在D盘下的Go文件夹中找到如图1.5所示的64位的Go语言开发包。双击Go语言开发包。
打开如图1.6所示的Go语言开发包的安装对话框后,单击Next按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P18_3232.jpg?sign=1739341569-PmvV9Njrmx4swZfBnV3hYTZpxiDWwcJZ-0-9bdaa09202a623175f835acaa3ae7df2)
图1.5 64位的Go语言开发包
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P18_3239.jpg?sign=1739341569-6j62gYE4SlsMZsDcnUFFpQgp5DUkvX10-0-3d521ad21a513f9f6007e2b49d41fc68)
图1.6 用于安装64位Windows系统的Go语言开发包的对话框
打开如图1.7所示的End-User License Agreement(用户许可协议)对话框后,先选中I accept the terms in the License Agreement复选框,再单击Next按钮。
打开如图1.8所示的Destination Folder(目标文件夹)对话框,单击Change按钮把目标文件夹路径设置为D:\GO,再单击Next按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3277.jpg?sign=1739341569-u2F02nnyk0e6uikvQ0OvTwxQDaDXj5q8-0-1c11d31e328ded8cb7eb3f80168be76b)
图1.7 “用户许可协议”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3278.jpg?sign=1739341569-SATO6I9qgT5fecPrV59n60ALQ6KTXxBK-0-9c11bfd8ed74fa2bffa030c32c771bc8)
图1.8 “目标文件夹”对话框
打开如图1.9所示的Ready to install Go Programming Language amd64 go1.20.2(准备安装Go语言开发包)对话框后,单击Install按钮。
Go语言开发包安装完毕后,弹出如图1.10所示的完成安装Go语言开发包的对话框,单击Finish按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3282.jpg?sign=1739341569-jHOpEw9Q8N6Imm1umexoc6uquOPjsMsD-0-47df4086d10a54d504101068c9178733)
图1.9 “准备安装Go语言开发包”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3283.jpg?sign=1739341569-c8R7S5lO6MO4RapK17DYGDsmIwwFgbBB-0-650553495ada512f9dc836b9c628e1ca)
图1.10 完成安装Go语言开发包的对话框
再次打开如图1.11所示的D盘下的Go文件夹,发现新生成了许多文件和文件夹。其中,api文件夹的主要内容是Go语言每个版本的api变更差异;bin文件夹是Go语言的编译器、文档工具和格式化工具;doc文件夹是英文版的Go语言文档;lib文件夹是Go语言可以引用的一些库文件;src文件夹是标准库的源码;test文件夹是Go语言用于测试的实例。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P20_3324.jpg?sign=1739341569-PaamOOPL60ujjWVSMdhxg8lF95mTrdd3-0-6f9d10d3083b4c9168a468b26f1d1f69)
图1.11 在D盘下的Go文件夹中新生成的文件和文件夹
1.2.3 配置Go语言环境变量
在Windows 10系统的桌面上,找到并右击“此电脑”图标,在弹出的快捷菜单中选择“属性”命令,如图1.12所示。
在如图1.13所示的对话框的左侧,单击“高级系统设置”超链接。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P20_3335.jpg?sign=1739341569-zsOtvQvQ9NO58pofNdj9hYBk4qZyxkrW-0-0e2635efca8804de2e55147b81559001)
图1.12 选择“属性”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P20_3336.jpg?sign=1739341569-tEAZ72krmCkrsdwRkk9dgdKbpemUee1U-0-344f5896698e21baa9979df434e73b10)
图1.13 单击“高级系统设置”超链接
在如图1.14所示的“系统属性”对话框中,单击“环境变量”按钮。
如图1.15所示,单击“新建”按钮,分别输入变量名GOROOT和变量值D:\GO,再单击“确定”按钮。这样就成功地把Go语言开发包的安装路径添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3355.jpg?sign=1739341569-6Y0dgca1wLbY1r4JZWuHk1Kc3ST9DYSm-0-d8501c83a5cd349079682a3948daa051)
图1.14 打开“环境变量”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3356.jpg?sign=1739341569-4cBL4v2Tq83YPlJW11aFdT3YGQjGSbb3-0-a23ab95f050fb5bba9aace35e18d5b2a)
图1.15 新建环境变量GOROOT
如图1.16所示,先单击“新建”按钮,分别输入变量名GOPATH和变量值D:\GoProject,再单击“确定”按钮。这样就成功地把开发Go项目的路径添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3360.jpg?sign=1739341569-daze1LBnwQ7CdNrM4lqnOtzEDHXx0r6H-0-9ddfbdf82d0b27c3aeddf7f30013479c)
图1.16 新建环境变量GOPATH
如图1.17所示,先单击“新建”按钮,分别输入变量名GOPROXY和变量值https://goproxy.io,再单击“确定”按钮。这样就把用于下载第三方包的GOPROXY代理添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P22_3408.jpg?sign=1739341569-JDrrzdIDLhR6LW7jKtV5FC68jSuOCtdw-0-0d478a09d5eb668f7d47879a17e76be4)
图1.17 新建环境变量GOPROXY
如图1.18所示,在“环境变量”对话框中双击环境变量Path。
如图1.19所示,单击“新建”按钮,分别把D:\GO、D:\GO\bin、%GOROOT%\bin和%GOPATH%\bin添加到Path中。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P22_3412.jpg?sign=1739341569-3KHZkGrvOTEooMrjdhlzzGLzl3jytkCA-0-a87f2efc1422cd25bf08ea794d5d10af)
图1.18 打开环境变量Path
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P22_3413.jpg?sign=1739341569-n92F0svbuXnBQE3Es6Dy5VM6M9j5slnL-0-7411eb330798b6b2acc7bb5463ba6bd9)
图1.19 编辑环境变量Path
最后,逐一单击“确定”按钮,返回上一级。这样Go语言环境变量就配置成功了。
1.2.4 测试Go语言开发包是否正常运行
Go语言开发包安装完毕后,需要测试它能否正常运行。在Windows系统下先单击桌面左下角的图标;再在下方的搜索框中输入cmd,如图1.20所示;然后按Enter键,打开命令提示符对话框。
在命令提示符对话框中输入go env命令,按Enter键后,将显示如图1.21所示的Go语言开发包的相关信息,这说明Go语言开发包已经安装成功。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P23_3449.jpg?sign=1739341569-FhOJzm3nbw9uNQTM00DuPJpJSVTDI3Kk-0-e0f781fb49bae20be13301e0133b51bc)
图1.20 打开命令提示符对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P23_3450.jpg?sign=1739341569-LneX6PNSDrJEwPM6qIgQHwlSfkPzZ0AS-0-a1c48f55ea39e62c35677de3d0697825)
图1.21 显示Go语言开发包的相关信息
说明
“set GO111MODULE=on”这个配置项让Go语言使用Module,禁止Go命令行在GOPATH目录下查找源文件。Module是相关Go包的集合,是源代码交换和版本控制的单元。Go命令行支持使用Module记录和解析对其他模块的依赖性。也就是说,Module可以替代GOPATH,指定Go命令行查找源文件。
1.3 Go语言开发工具
Go语言开发工具主要是为Go语言提供编码辅助和内置工具。那么,Go语言开发工具应该具备哪些主要特点呢?
语法高亮。
匹配括号和括号补全。
查找和替换功能。
检查编译错误。
在Linux系统、Mac OS系统和Windows系统下正常工作。
通过第三方库扩展或者替换某个功能。
代码自动补全和代码折叠。
运行程序和调试程序。
下面推荐几款常用的Go语言开发工具。
Goland。它是由JetBrains公司开发的商业Go语言开发工具(需付费)。
LiteIDE。它是一款非常好用的、轻量级的Go语言开发工具。对代码编写、自动补全和程序的运行调试都能很好地支持。
GoClipse。它是一款Eclipse插件,虽然使用它需要安装JDK,但它拥有Eclipse的诸多功能。
VS Code(Visual Studio Code)。它是一款由微软开发的、跨平台的免费开发工具,不但具有语法高亮、代码自动补全、代码重构等功能,而且内置命令行工具和Git版本控制系统,还可以通过内置的“扩展商店”安装扩展插件以拓展其功能。
本书把VS Code作为Go语言开发工具。本节将介绍如何在Windows系统下下载、安装和汉化VS Code。
1.3.1 下载VS Code
打开浏览器,输入网址https://code.visualstudio.com/按Enter键,即可打开如图1.22所示的VS Code官网首页。单击Download按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P24_3493.jpg?sign=1739341569-7QZnvda0OWQzJQFLwjv15sQIMFmgp4CK-0-f35758499c3f02fd435e59028cade077)
图1.22 VS Code官网首页
打开如图1.23所示的VS Code下载页面,单击Windows系统版块下方与System Installer标签对应的64 bit按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P25_3507.jpg?sign=1739341569-EuAl7yQYJN2DSfZh9KCkQYM4Q138tx62-0-ea887ec71290b1060c08b75cd2951667)
图1.23 VS Code的下载页面
说明
如果当前CPU系统是32位Windows系统,就要单击Windows系统版块下方与System Installer标签对应的32 bit按钮。
这时,弹出如图1.24所示的“新建下载任务”对话框,笔者把64位Windows系统的VS Code下载到D:\VSCode路径下。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P25_3517.jpg?sign=1739341569-XKvBfoLqMBEZba7T99uF8R1W52mQBsBT-0-4c600ab82c60bad8ef7af5baece33517)
图1.24 “新建下载任务”对话框
1.3.2 安装VS Code
按照下载路径D:\VSCode,可在D盘的VS Code文件夹中找到如图1.25所示的64位VS Code安装包。双击该安装包。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P25_3554.jpg?sign=1739341569-oXhNKSCPl4pTZbgwjqfoBQI70ySMdY4F-0-40385f0dbaa3b8deab9524d78bf9f844)
图1.25 64位Windows系统的VS Code安装包
弹出如图1.26所示的“许可协议”对话框,选中“我同意此协议”单选按钮,单击“下一步”按钮。
弹出如图1.27所示的“选择目标位置”对话框,单击“浏览”按钮,设置安装路径为D:\VSCode\Microsoft VS Code,再单击“下一步”按钮。
弹出如图1.28所示的“选择开始菜单文件夹”对话框,“选择开始菜单文件夹”的默认设置为Visual Studio Code。此处不做修改,单击“下一步”按钮。
弹出如图1.29所示的“选择附加任务”对话框,选中所有复选框,单击“下一步”按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3569.jpg?sign=1739341569-GY59xTn0MSEaAEddrjYMmHhy06qfH1np-0-7973dcf4430c78229296bb21569e63b7)
图1.26 “许可协议”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3570.jpg?sign=1739341569-RJ1bcuZCurbwviLBiIODpFaZUa0M1sQo-0-69ab259501fb7802479968dcaae21961)
图1.27 “选择目标位置”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3573.jpg?sign=1739341569-ZYCcgrkca1kIMhiEn4gFrGhWAQ1VuBRD-0-9fe9670bc70e6be48ec888abeb018f1b)
图1.28 “选择开始菜单文件夹”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3574.jpg?sign=1739341569-1r82YNJVlBEepX1fGBVW0P4GJMBxKNuj-0-e3f1568681629ca998d98fd21786d05c)
图1.29 “选择附加任务”对话框
弹出如图1.30所示的“准备安装”对话框,检查VS Code的安装路径、开始菜单文件夹和附加任务是否与之前设置的内容一致。检测无误后,单击“安装”按钮。
Go语言开发工具包安装完后,弹出如图1.31所示的“Visual Studio Code安装完成”对话框,选中“运行Visual Studio Code”复选框,单击“完成”按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P27_3619.jpg?sign=1739341569-c9CA00EhVzrLlyTSZH8JmJMPZyJoIVdN-0-f14f14187dae0efeb9fd5bda2c8a3250)
图1.30 “准备安装”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P27_3620.jpg?sign=1739341569-zvyYNzUJaaWJFEN7z9nnrhXUoAG8T7Ma-0-f339362d82d2d9109770de49e64f1795)
图1.31 “Visual Studio Code安装完成”对话框
1.3.3 汉化VS Code
关闭VS Code的安装程序后,VS Code自动运行,VS Code界面如图1.32所示。这时,在VS Code界面的右下角弹出“安装语言包并将显示语言更改为中文(简体)”窗口。单击“安装并重启”按钮,即可对VS Code执行汉化操作。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P27_3625.jpg?sign=1739341569-qCZ5FiaGzrwaoFscE3msvKUyb8a9Eflt-0-50edcf594b9c8002a2ead00b40cf6f61)
图1.32 VS Code界面
说明
如果VS Code界面中的弹窗消失,单击VS Code界面右下角的“通知”图标即可显示弹窗。
VS Code的汉化需要持续一段时间。在这段时间内,不要对VS Code进行任何操作。VS Code成功汉化后,弹出如图1.33所示的VS Code界面。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P28_3656.jpg?sign=1739341569-ocwv3W6wAj2k9UD7MVzwKcBLJ5wulp7I-0-f26f9f1c41616d6342a40f79952eb0fd)
图1.33 汉化后的VS Code界面
1.3.4 在VS Code中安装Go语言插件
虽然VS Code默认不支持Go语言,但是开发者可以从VS Code的扩展商店里安装Go语言插件,使VS Code支持Go语言。
如图1.34所示,在汉化后的VS Code界面中,单击“扩展商店”图标,在搜索文本框中输入go,按Enter键。在VS Code界面的左侧显示的搜索结果中找到Go语言插件,单击与其对应的“安装”按钮。
VS Code成功安装Go语言插件后,显示如图1.35所示的界面。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P29_3672.jpg?sign=1739341569-8uRmACoBnBjbxF9s5bJOiKW5xxdp8OkW-0-f4416e4fd180188e461b11bba486c4f1)
图1.34 搜索并安装Go语言插件
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P29_3675.jpg?sign=1739341569-TRdkHJd6ta9Aw8cyKksw61KLZBv5QdyN-0-44f52cdb189b72e889a07a7da107faa1)
图1.35 VS Code成功安装Go语言插件后的界面
1.4 第一个Go语言程序
前几节介绍了如何下载、安装Go语言开发环境,以及如何下载、安装、汉化开发工具VS Code,还在VS Code中安装了Go语言插件。下面讲解如何使用VS Code编写第一个Go语言程序。
1.4.1 创建Go项目和Go文件
关闭并重新打开VS Code后,VS Code显示如图1.36所示的界面。选择“开始”命令。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P30_3705.jpg?sign=1739341569-qu6zNnpnCljWLB4XIxhGLATAUoyZF4AL-0-f141bad1f8492c1f45f2a0f4ab37d7cd)
图1.36 选择“开始”命令
在如图1.37所示的界面中,选择“新建文件”命令。
跳转到如图1.38所示的界面,选择文本框下方的“文本文件”命令。
在如图1.39所示的界面中,选择“选择语言”命令。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3718.jpg?sign=1739341569-kJBer0oNXPnkal9L6BIG8FGyOOZev9sp-0-f064b45e838b7140e7b9392fad86075b)
图1.37 选择“新建文件”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3721.jpg?sign=1739341569-CRKvXiqBohocal5trTZ1BPfHoWJzu1gl-0-2ee5841e0a7174d11e83b866db780581)
图1.38 选择“文本文件”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3724.jpg?sign=1739341569-9uHp1lzpeYWMHgk8a7vQK2pkiwutbZ5T-0-914b0710486f5dac558cb84069e8987f)
图1.39 选择“选择语言”命令
跳转到如图1.40所示的界面后,选择“Go (go)”命令。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P32_3745.jpg?sign=1739341569-Ol31v4PadkB89O0HYjd709eQx7IjwV1a-0-bd43eaee1acc54b5f8d8afc38f45a7a8)
图1.40 选择“Go (go)”命令
跳转到如图1.41所示的界面后,在界面的右下角弹出一个窗口。这个窗口的提示内容是“需要安装Go语言需要的第三方插件”。单击Install All按钮进行安装。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P32_3762.jpg?sign=1739341569-fhThRulczk9xHxoFVgX2sGBlYtqVJ0k2-0-212aec221b635b165ce3b0ec653f5035)
图1.41 单击Install All按钮
如图1.42所示,待“输出”下方出现“All tools successfully Installed. You are ready to Go.”这一提示信息,说明Go语言依赖的第三方插件成功安装了。
在D:\GoProject路径下,新建空文件夹GoDemos,单击如图1.42所示的“打开文件夹”按钮,打开文件选择对话框,选择GoDemos文件夹作为Go语言程序的项目文件夹。
在VS Code弹出的如图1.43所示的对话框中,选中“信任父文件夹‘GoProject’中所有文件的作者”复选框,单击“是,我信任此作者 信任文件夹并启用所有功能”按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P33_3768.jpg?sign=1739341569-UCgOEA8Uec02Vq8OtqRXjT35hcvPDSQR-0-bf6c716aa22130f542cc13869111f21d)
图1.42 单击“打开文件夹”按钮
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P33_3771.jpg?sign=1739341569-wYiD2firgrVijQBpPf8ur12sOOJ78Wzo-0-85c076b9a92573b9173d7cfad5b38c4a)
图1.43 “是否信任此文件夹的文件的作者”对话框
跳转到如图1.44所示的界面后,在这个界面的左上角即可看到第一个Go语言程序所在的项目文件夹,即GODEMOS(GoDemos中的字母全部都大写)。
注意
当VS Code提示有新内容更新(在如图1.39所示的界面中的左下角)时,需要及时更新VS Code。
如图1.45所示,当把鼠标光标移动到GODEMOS项目文件夹附近时,VS Code会闪现出4个图标。单击左侧的第一个图标,新建Go文件。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P34_3803.jpg?sign=1739341569-ZdrFRnzSfTvFkYklfEMzkvBCnwqHiH0w-0-1e0440472615e12a239b55ec74ceb0be)
图1.44 Go语言程序项目文件夹
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P34_3806.jpg?sign=1739341569-csHLM7qHUAesPpBu1yQJOsAS62maJ2zS-0-abf4eef865fa98f676cea67a54ed71a1)
图1.45 新建Go文件
如图1.46所示,VS Code在GODEMOS项目文件夹的下方添加一个文本框。在这个文本框里,输入Go文件的文件名demo_01.go后,按Enter键。
注意
Go文件的文件扩展名为go,在命名Go文件时,不能省略文件扩展名。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P35_3834.jpg?sign=1739341569-4qq5Kbjp73UeHDW0GCUffCkgvzZYKNCl-0-78e24286cb0f01aae8b64e35f53c7ff4)
图1.46 命名Go文件
新建Go文件后,VS Code的界面如图1.47所示。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P35_3838.jpg?sign=1739341569-sa6LziVNPaVIBlSgx2BgXozulKXxGtF4-0-efa18016a8882c1865d5393a981c2199)
图1.47 新建Go文件后的VS Code界面
1.4.2 编写第一个Go语言程序
本节的主要内容有两个,一个是在新建的Go文件中编写第一个Go语言程序;另一个是讲解第一个Go语言程序。
【例1.1】换行输出和不换行输出(实例位置:资源包\TM\sl\1\1)
在新建的Go文件中,首先使用package关键字声明main包,然后使用import关键字导入fmt包,接着使用func关键字声明main()函数,最后分别调用fmt包中的Println()函数和Print()函数打印hello,world和“你好,世界”。代码如下。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P36_3906.jpg?sign=1739341569-use4la4jIfDxkMx3IzaGSJ6y5KbrwhVF-0-c1aaa5863c6e6b2e7edc5ca9b223dd0e)
虽然通过实现代码上方的文字描述能够了解第一个Go语言程序的编写步骤,但是无法明确每一行代码的含义。下面将对第一个Go语言程序的实现代码进行解析。
在Go语言中,“包”是管理单位,每个Go文件首先要使用package关键字声明其所属的包。
main包是Go语言程序的入口包,Go语言程序必须有且仅有一个main包。Go语言程序如果没有main包,在编译时会出错,无法生成可执行文件。
声明main包后,使用import关键字导入当前Go语言程序依赖的包,并且使用英文格式下的双引号引用这个包的名字。
fmt包是Go语言的标准库,用于格式化输出数据和扫描输入数据。
在Go语言中,使用func关键字声明函数。
main()函数是Go语言程序的入口函数,只能声明在main包中,不能声明在其他包中。
Println()函数是fmt包中的基础函数,其作用是输出数据,并且在数据的末尾使用换行符,使数据末尾处的光标出现在下一行,实现换行效果。
Print()函数也是fmt包中的基础函数,其作用也是输出数据;与Println()函数不同的是,Print()函数在数据的末尾没有使用换行符,使光标停留在数据的末尾,实现不换行效果。
1.4.3 运行Go语言程序
在新建的demo_01.go文件中编写完成第一个Go语言程序后,VS Code的界面如图1.48所示。
那么,在VS Code中如何运行例1.1呢?为了解决这个问题,需要在VS Code中安装Code Runner插件。
如图1.49所示,在汉化后的VS Code界面中,单击“扩展商店”按钮,在搜索文本框中输入code runner,然后按Enter键。在VS Code界面的左侧列出的搜索结果中找到Code Runner插件,单击与其对应的“安装”按钮。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P37_3912.jpg?sign=1739341569-xBj4fKoviL3tm9E4PSZe1pCOEsHXyEHe-0-8f7e9cb032a11a58eb73a75749fa4be8)
图1.48 第一个Go语言程序完成后VS Code的界面
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P37_3915.jpg?sign=1739341569-ivYtc74QnHoastffZ8iZN6kNywOqJg5B-0-9931d471710fc89e8bd0bccafc4c797b)
图1.49 搜索并安装Code Runner插件
安装Code Runner插件后,VS Code显示如图1.50所示的界面。单击关闭“扩展Code Runner”窗口。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P38_3940.jpg?sign=1739341569-mTexHTV3SvCCKnQNCROkVhvEzbi73OQR-0-aea9fe24c95dd7e428585aa1f8ddbd1b)
图1.50 VS Code成功安装Go语言插件后的界面
关闭“扩展Code Runner”窗口后,VS Code显示如图1.51所示的界面。对比图1.48,发现在如图1.51所示的界面的右上角多了一个图标。
图标就是运行Go语言程序的快捷方式。单击
图标运行例1.1。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P38_3953.jpg?sign=1739341569-9v4Gv0lmQDZfLUsm8euw1qOA5t3rGVHG-0-7de213a1631408fcee711f4539fcd555)
图1.51 关闭“扩展Code Runner”窗口后VS Code界面
如图1.52所示,例1.1的运行结果出现在VS Code界面右下方的“输出”窗口内。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P39_3970.jpg?sign=1739341569-1fMMsd7Tx73kLsJrt7I48f3QgJM2GQ8e-0-20355d3d6e5b4442ba7c4900c3786585)
图1.52 例1.1的运行结果
1.5 要点回顾
通过学习本章,读者能够明确什么是Go语言、为什么学习Go语言、Go语言的特性和应用、Go语言与并发的关系、在Windows系统中搭建Go环境的方法、在使用Go语言开发工具前的准备工作等内容。此外,通过解析第一个Go程序的编写和运行过程,使读者既能够熟悉Go语言的编码方式,又能够进一步明确Go语言开发工具的使用方法。