![Go语言从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/392/52842392/b_52842392.jpg)
第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=1739601547-CaajB1qptwAnKaBpccUj4Zr7ePoqxS4t-0-b6e2196e33e5949e7c17e26369271247)
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=1739601547-mX4kDKAQYNgIqqbTuS8DPHqkoSd5wIo2-0-b19d3cd570ead89562ee9a1d2966eb75)
图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=1739601547-xEXaJCaiiw1TWdmAeUiW53CILo83W9Of-0-ff445fa2a304cc2c5a8d14846a8501e9)
图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=1739601547-6lD24OuoFy7mnWypcc1krEpz4unJLGHq-0-4d56124a8404237a4846df21bad117ed)
图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=1739601547-NlLClIRqkaXIxfiz4KXZFvNhs7ceJJu8-0-3f57f06409717d77bcf6597350e42b24)
图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=1739601547-LK0EiDdYh5Kae3yC4wNFMbHGumuE9jQN-0-ff18a766edb3cf5dca3c532fed7c0c8c)
图1.5 64位的Go语言开发包
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P18_3239.jpg?sign=1739601547-PZT6bkEHIzPO52XxJkvd2SXdOBPFUiwY-0-c5534a8d5e060e194e9b7ca3563245cf)
图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=1739601547-jggTK7EVWHTtNhXN3A3FA1fgZCpmBjaS-0-601a2d08b53f4676ad4adcb024e7d58a)
图1.7 “用户许可协议”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3278.jpg?sign=1739601547-NGeuLEW01fQBScbHZ9fXWAQDEOMWybbs-0-57a6ae746b6ab5470e63d1ee524379cf)
图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=1739601547-IpJKVVrN7swtMXVC4IDEyr7qD6uMwdr1-0-7d2387697c8c4e3b47326476057c65ff)
图1.9 “准备安装Go语言开发包”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P19_3283.jpg?sign=1739601547-e0As4nUR4Ea9b0zGno0Z6X71UrobqBuO-0-a20d53846d127f776f455b11420b54cc)
图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=1739601547-hgyzbdfPQvH8befRKkJUCk5hAC334EDT-0-f45539f55d5095ee52a77a2f1290f052)
图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=1739601547-zELlwtrEnZLDrkbQtCxdCjVWe1LYtvdV-0-57456c7f64df4e56512a018abb16797b)
图1.12 选择“属性”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P20_3336.jpg?sign=1739601547-gRLuTnDg6fvB6Of3DFagYFc54xOeNohL-0-2db8257588f188850e511b2c468a2a5f)
图1.13 单击“高级系统设置”超链接
在如图1.14所示的“系统属性”对话框中,单击“环境变量”按钮。
如图1.15所示,单击“新建”按钮,分别输入变量名GOROOT和变量值D:\GO,再单击“确定”按钮。这样就成功地把Go语言开发包的安装路径添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3355.jpg?sign=1739601547-HEisH6LA02IpOau9lG3IBphA3zhxluTz-0-3c1c9f268f969378ee94299fed0b5d63)
图1.14 打开“环境变量”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3356.jpg?sign=1739601547-UtMcRzvqKwwdqM4euyVbmf1g6ow1J9e0-0-4097d118a5f0aa3d1b712177300a486e)
图1.15 新建环境变量GOROOT
如图1.16所示,先单击“新建”按钮,分别输入变量名GOPATH和变量值D:\GoProject,再单击“确定”按钮。这样就成功地把开发Go项目的路径添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P21_3360.jpg?sign=1739601547-l7nP8oTZsIgaMDylgLb8m82Q2oWi06tp-0-c3fec83b0b91331739186c3c4e5136e8)
图1.16 新建环境变量GOPATH
如图1.17所示,先单击“新建”按钮,分别输入变量名GOPROXY和变量值https://goproxy.io,再单击“确定”按钮。这样就把用于下载第三方包的GOPROXY代理添加到环境变量中了。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P22_3408.jpg?sign=1739601547-lMd9sYi5wvxOgcMvBR7owyAddS043WQV-0-d0d3be3b39325f803f60a8bece94fad1)
图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=1739601547-xvKKH6Aq2gpEzFGgwIYloyRMqnCMBqnU-0-de7072c3152a83a6a8809f038d7982bf)
图1.18 打开环境变量Path
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P22_3413.jpg?sign=1739601547-KRjfz2IKTXyHvpO86o3r4xTrv4nceKLf-0-254b1625aebf05e2f0be7a3eb940acb2)
图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=1739601547-Tj9kYsTRowhPgbHTGe1OwjwWr1njk3SB-0-de7cdcd8c0d3c54f2d8f40fe423ebeb2)
图1.20 打开命令提示符对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P23_3450.jpg?sign=1739601547-gBArluvXxrL0oP7QnfpuRLBsoRQ9VYrI-0-dacd2e902868577d043429214c802c7c)
图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=1739601547-z7MZZqQMxSWJ1AJ2lLT4xPAyDYwX3nYl-0-4a908a4220b7566dde63df2520dd30c0)
图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=1739601547-S4vjJ274KWqngGCTPtgUuRpSqdSJULB7-0-ad85dbea5a723853cf46f5ee5851c996)
图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=1739601547-hmn5IkjgYckZWFtdIZJWtYCh7PDj7FOr-0-871631c10c981b26ef468834c2eb8acf)
图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=1739601547-QuKXMWHRuNIdtbpx4BHdrD4SOwd9OdSh-0-8ffabb3eb4d4a39774b77b39784ab612)
图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=1739601547-daOoWsENTw77SG0iZeBU35gnrSiGvCn1-0-e5131325572bf06887326244c532cb5a)
图1.26 “许可协议”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3570.jpg?sign=1739601547-ab5f1h9v2KgeXhx4Ff0mLReZ6VSImNmK-0-bb831f929b6e97193bd1f55b6f3757ef)
图1.27 “选择目标位置”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3573.jpg?sign=1739601547-SWVbOBnThypsE63z92Kb6RQq6HKKEXl5-0-46649c36af544c2964900001bce47614)
图1.28 “选择开始菜单文件夹”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P26_3574.jpg?sign=1739601547-4tn9OA2Gmxk7e8QdJEqZ8MrVPGbGg6tT-0-ccc1ce1b22151f0a88df318d28b3e929)
图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=1739601547-kNeOgBM83i9745hfbVcAVqqdbuCExQz1-0-5413bee85645ab904deecc5d8754d7ef)
图1.30 “准备安装”对话框
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P27_3620.jpg?sign=1739601547-pI4GBEQtAyjlXDU1MGh6DfmwRcpvw6M5-0-4c5fbb0f696ae935b85b367447514b10)
图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=1739601547-udU9YlRzW5eh2moJKrXpTK6tW83cwgGS-0-09fd0935267c73ff27fb70c87ba55668)
图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=1739601547-ILqXUziNYUHLDM4Rsa65wFeQYWVHboK4-0-3fb09311f07d313f13194859180e1b52)
图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=1739601547-LPXFu9hfdvDdC8blCpCHHwaEzAX0nnBS-0-881a00d58ea49c0b62b06e2218840164)
图1.34 搜索并安装Go语言插件
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P29_3675.jpg?sign=1739601547-1MbeqivlpL5BrrnrBAqoAdJQsoEP6WJg-0-de9da752b25773c496217658c8aceee4)
图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=1739601547-yeWr0nM4RJf6H6fZ3H6NYgLbivKFrepN-0-3890ae6de2e4feed6dabaf6007ecfca1)
图1.36 选择“开始”命令
在如图1.37所示的界面中,选择“新建文件”命令。
跳转到如图1.38所示的界面,选择文本框下方的“文本文件”命令。
在如图1.39所示的界面中,选择“选择语言”命令。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3718.jpg?sign=1739601547-BUiB0xnnN82cjJ9yRdmKMjn17UqSxAsa-0-e9aac9b860bc42a9fc64f5eab10faf3b)
图1.37 选择“新建文件”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3721.jpg?sign=1739601547-YDr6oeW0qQPiDVJpOz2lOpjeBFONPj9Z-0-fab9e4e232ac53bd9a0b87a1b3df9bb1)
图1.38 选择“文本文件”命令
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P31_3724.jpg?sign=1739601547-1u3I7KU1zdP9oI5595c5avBrdiWFrW3R-0-329754d802342a8fcb751fbb0700d64d)
图1.39 选择“选择语言”命令
跳转到如图1.40所示的界面后,选择“Go (go)”命令。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P32_3745.jpg?sign=1739601547-vMOcRtElnTvwWb2ridACAQKsG2b3hkLv-0-8472eb33502d25cc374a748ffcb86d67)
图1.40 选择“Go (go)”命令
跳转到如图1.41所示的界面后,在界面的右下角弹出一个窗口。这个窗口的提示内容是“需要安装Go语言需要的第三方插件”。单击Install All按钮进行安装。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P32_3762.jpg?sign=1739601547-oR7YE0uhOM6mcvbdVItuT33UZbcAmSSH-0-f35864c352af00e45094f4b70d153e86)
图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=1739601547-dDDeSFmsfqXAZYcHpz41RC44z2hlad6Y-0-15c1d323cad0784a4e7f0d082c2c7fe6)
图1.42 单击“打开文件夹”按钮
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P33_3771.jpg?sign=1739601547-aDsPs3qNaiZvIhPXEeMJfuE17JERZ9Lc-0-27a243c3aa597027cceceea84223d8ca)
图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=1739601547-yWyRcDDiq5ypPHVwdR6eRd0BzRlS8AL1-0-cddda8cee3ef964218815466528ff51f)
图1.44 Go语言程序项目文件夹
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P34_3806.jpg?sign=1739601547-AgAsT0WGVmQShzMJIy40BBnmP603smpg-0-84efa6baae4dd9872a3022957879a2e7)
图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=1739601547-hnvNUMCn65LxPBpPkfSZ1EffQUt5FFT2-0-f1b49dc90bea54b5747f42241a79a0d1)
图1.46 命名Go文件
新建Go文件后,VS Code的界面如图1.47所示。
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P35_3838.jpg?sign=1739601547-vabIkp4ArpdJYkP4F4INmtZEYTHiAlBy-0-e5c598ca4374d3844ec38583761b9074)
图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=1739601547-vAhZe4NDN976OkoWP0oCau6PHIVal1vp-0-5dcd47be8c58a3ee118627772fd727b2)
虽然通过实现代码上方的文字描述能够了解第一个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=1739601547-2xJwkgAgN5ASJnhh5I77IPOVfEpXQhot-0-93a6b4d2a3132e4c6954fa97396a5e70)
图1.48 第一个Go语言程序完成后VS Code的界面
![](https://epubservercos.yuewen.com/650B1B/31397895107165706/epubprivate/OEBPS/Images/Figure-P37_3915.jpg?sign=1739601547-u3055njhuGRVsYNUwxDKN5PxjvAqJwZx-0-18e5757bb7419fa1fb9f15075a90ba72)
图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=1739601547-nEFrKVVJJmItcEUh0siWksPHUtrlP9It-0-069f5ffae41478e51cdb59773b0c4211)
图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=1739601547-ZT7kE28wKYgd8Kv0iixhmoDRvi1E1RG2-0-9423577ebfc28c7f66530e32ae8bb7ab)
图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=1739601547-QLT0QjWzFWlSF7qUK6vrO8F5BqGsAH85-0-96ede4747a20c212459a5400ecb99408)
图1.52 例1.1的运行结果
1.5 要点回顾
通过学习本章,读者能够明确什么是Go语言、为什么学习Go语言、Go语言的特性和应用、Go语言与并发的关系、在Windows系统中搭建Go环境的方法、在使用Go语言开发工具前的准备工作等内容。此外,通过解析第一个Go程序的编写和运行过程,使读者既能够熟悉Go语言的编码方式,又能够进一步明确Go语言开发工具的使用方法。