当前位置:网站首页>Go语言之Go 快速入门篇(一):第一个 Go 程序
Go语言之Go 快速入门篇(一):第一个 Go 程序
2022-06-11 02:30:00 【程序猿15528175269】
安装 Go
使用 Go 语言之前,首先要安装 Go。Go 为 Linux、Mac、Windows 等不同的平台分别提供了相应的安装包:Download and install - The Go Programming Language,根据自己的操作系统选择对应的安装包点击下载,然后按照引导流程安装即可。
以 Mac 为例,除了官方提供的 Go 安装器,还可以通过 Homebrew 在终端窗口进行安装:
brew install go安装完成后,通过 go version 查看 Go 语言的版本来验证是否安装成功(编写此教程时的最新版是 1.15.7):

开发工具选择
在本地安装完 Go 环境之后,需要选择一个趁手的开发工具来编写 Go 语言代码,目前比较流行的开发工具有 JetBrains 家付费的集成开发环境 GoLand :

以及微软家免费开源的 Visual Studio Code,使用 VS Code 的话需要安装Go 扩展:

对于新手,推荐使用 GoLand,学院君后续教程也将以 Mac + GoLand 作为本地开发环境进行演示。
第一个 Go 程序
选择好了开发工具,接下来,就可以直接开始编写第一个 Go 语言程序了,还是遵循编程语言的一贯传统,我们从 Hello World 开始 Go 语言学习之旅。
首先,我们打开 GoLand IDE,选择新建一个 hello 项目:

在 Location 中输入项目路径,最后一级目录就是项目名称,在 GOROOT 中选择正确的 Go 版本(一般默认即可),就可以点击 Create 按钮初始化项目了,初始化完成后,会进入 GoLand 主界面:

如果你之前使用过 JetBrains 家的产品,比如 PhpStorm、WebStorm、PyCharm、IntelliJ IDEA,应该会非常熟悉,这里我就不详细介绍这个 IDE 的布局了。
接下来,我们需要在这个项目中新建一个文件来编写 Go 代码,Go 源码都是存放在 .go文件中的,所以我们在 hello 目录下新建一个 hello.go 文件:


然后在其中编写 Go 代码如下:

即:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}好了,一个最简单的打印 Hello World 的 Go 代码就写好了,下面我们简单分析下每一行代码的含义。
代码解读
和 Java 类似,Go 使用包作为基本单位来管理代码(可以类比为 PHP 中的命名空间),每个 Go 源代码文件的开头都是一个 package 声明,表示该文件中 Go 代码所属的包。包是 Go 语言里最基本的分发单位,也是工程管理中依赖关系的体现。
要生成 Go 可执行程序,必须声明一个名为 main 的包,并且在该包中包含一个名为 main() 的主函数,该函数是 Go 可执行程序的执行起点,这一点和 C 语言和 Java 语言很像,后续编译 Go 项目程序的时候也要从包含 main 包的文件开始。Go 语言的 main()函数不能带参数,也不能定义返回值。
在包声明之后,是一系列的 import 语句,用于导入该程序所依赖的包(可类比为 PHP 中通过 use 引入其它命名空间的类来理解)。由于本示例程序用到了 Println() 函数,所以需要导入该函数所属的 fmt 包。
有一点需要注意,与 Java 和 PHP 不同,在 Go 语言中,不得包含在源代码文件中没有用到的包,否则 Go 编译器会报编译错误。这与下面的强制函数左花括号 { 的放置位置以及之后会提到的函数名的大小写规则,均体现了 Go 语言在语言层面解决软件工程问题的设计哲学。
所有 Go 函数(包括在面向对象编程中会提到的类型成员函数)都以关键字 func 开头(这一点与 PHP、Java、JavaScript 等语言通过 function 定义函数不同)。另外在 Go 函数中,左花括号 { 必须在函数定义行的末尾,不能另起一行,否则 Go 编译器会报编译错误:
syntax error: unexpected semicolon or newline before {
如果是在 GoLand IDE 中这么写,会直接显示错误提示:

另外,与 Python、JavaScript 类似,Go 程序并不要求在每个语句后面加上分号表示语句结束,这也是与 PHP、Java 等语言的不同之处。
最后,函数体很简单,就是调用 fmt 包提供的 Println 函数打印「hello,world」这行字符串,Go 语言可以直接通过包名 + . 号引用定义在该包中的函数。
编译 & 运行程序
对以上代码含义有了了解后,我们最后来编译并运行这个 Go 程序,和 PHP、Python 不同,Go 语言是编译型的静态语言(和 Java、C 一样),在运行 Go 程序之前,先要将其编译成二进制可执行文件,我们可以通过 Go 语言提供的 go build 命令对 Go 程序进行编译,然后直接运行编译后的可执行文件执行 Go 程序代码:

可以看到,代码执行成功,打印出了「Hello World!」。
此外,我们还可以通过 go run 命令来达到同样的效果,该命令将编译和执行指令合二为一,会在编译之后立即执行相应的可执行文件显示执行结果:

好了,关于第一个 Go 程序就简单介绍到这里
边栏推荐
- How to read PMBOK guide in 3 steps (experience + data sharing)
- ADVANCE.AI首席执行官寿栋将在2022新兴市场品牌出海线上峰会分享跨境电商运用AI技术合规
- 逃离大城市的年轻人:扛住了房价和压力,没扛住流行病
- Sword finger offer II 079 All subsets
- mysql重装时写my.ini配置文件出错
- How can Delma's own brand "take off" when Philips is listed on the market?
- 剑指 Offer II 079. 所有子集
- MOFs, metal organic framework materials of folic acid ligands, are loaded with small molecule drugs such as 5-fluorouracil, sidabelamine, taxol, doxorubicin, daunorubicin, ibuprofen, camptothecin, cur
- OpenJudge NOI 1.13 18:Tomorrow never knows?
- Add SQL formatter to vscode to format SQL
猜你喜欢

重磅直播!ORB-SLAM3系列之特征匹配(MLPnP、词袋模型等)。
![[resolved] how to fix another update in progress WordPress upgrade error](/img/b1/7b9945c1a623c20288f0d232cbb0c4.jpg)
[resolved] how to fix another update in progress WordPress upgrade error

码农的进阶之路 | 每日趣闻

Blue Bridge Cup_ Xiao Lan eats candy_ Pigeon nest principle / drawer principle

Sd3.0 notes

【189. 轮转数组】

app 测试 常用 adb 命令集合

Use of CIN and cout

Write my Ini configuration file error

How to add cookie pop-up window in WordPress website (without plug-in)
随机推荐
92. actual combat of completable future
A数位dp
13. numeric array
Metal organic framework materials (fe-mil-53, mg-mof-74, ti-kumof-1, fe-mil-100, fe-mil-101) supported on isoflurane / methotrexate / doxorubicin (DOX) / paclitaxel / ibuprofen / camptothecin
Why did those who left Beijing, Shanghai and Guangzhou with a smile cry in the end?
CPT 102_ LEC 13-14
The Google search console webmaster tool cannot read the sitemap?
[189. rotation array]
那些笑着离开“北上广”的人,为何最后都哭了?
AOSP - Developer mode is enabled by default
[implementation of bubble sorting]
Navicat Premium 15 工具自动被杀毒防护软件删除解决方法
同一个用户的两次请求SessionId竟然不一致-----记录问题
Blue Bridge Cup_ Xiao Lan eats candy_ Pigeon nest principle / drawer principle
[MySQL 45 -10] Lesson 10 how MySQL selects indexes
Problèmes de classe d'outils JDBC
两部门联合印发《校外培训机构消防安全管理九项规定》
Android WiFi hide SSID configuration method
完成千万元A轮融资,小象生活能否成为折扣界的“永辉”?
6 best WordPress Image optimizer plug-ins to improve WordPress website performance