超级苦工
阅读 208
《快学 Go 语言》第 1 课 —— Hello World

Go 语言的 Logo

最初 Go 语言的 Logo 是一只可爱的地鼠,地鼠昼伏夜出的习性让它显得很有 Geek 范。地鼠的行动其实并不敏捷,不过它繁殖能力很强,生长发育的很快。


到了 2018年,Go 语言重新制定了 Logo,消灭了地鼠,取而代之的是纯文字。这好像是在告诉用户 Go 语言不再是一个玩具语言,而是一个严肃的高效的正式语言。


不过这个新 Logo 不是很受欢迎,它虽然给人一种快速的感觉,但是也显得很极为古板。到目前为止,你在 Google 图片里搜索 Golang Logo,铺天盖地的还是地鼠的形象。


Go 语言团队

很多著名的计算机语言都是那么一两个人业余时间捣鼓出来的,但是 Go 语言是 Google 养着一帮团队打造出来的。这个团队非常豪华,它被称之为 Go Team,成员之一就有大名鼎鼎的 Unix 操作系统的创造者 Ken Thompson,C 语言就是他和已经过世的李奇一起发明的。


图中翘着二郎腿的谢顶老头就是 Ken Thompson,它参与 Go 项目时个人已经处于半退休状态 —— 年纪大了。有条件的读者可以看看 Youtube 上 Go Team 的访谈视频一睹大师们的风采,地址是youtube.com/watch?


Hello World

学习任何一门语言的第一步是看它的 Hello World 程序怎么写。下面是 Go 语言的 Hello World

package main

import "fmt"

func main() {
  fmt.Println("hello world!")
}

这个文件的名字是 main.go,使用下面的命令运行这个文件

$ go run main.go

输出

hello world!

是不是有一种操纵脚本的感觉,写完代码直接运行,中间的编译链接过程似乎都省去了。不过 go run 指令只是用来开发调试用的,在生产环境中程序可不是这样跑的。在开发完成后,需要将程序编译成没有任何依赖的二进制可执行文件,扔到服务器上运行起来。这个编译成二进制文件的指令就是

$ go build main.go

执行完毕后可以看到目录下多了一个 main 的可执行文件。运行它可以直接看到输出结果

$ ./main
hello world!

再强调一遍,这个二进制可执行文件是没有任何依赖的,即使服务器上没有 go 环境,它也是可以直接运行的。因为编译器已经将运行时依赖项都融进了这单一的可执行文件。这也是 go 语言的特色之处,让用户编写的程序可以轻装上阵。

我也想运行上面的 Hello World

有很多语言的初学者总要为开发环境发愁,不知道上面的 go 命令哪里来的,main.go 源码文件该放在哪里运行。下面我简单介绍一下 Go 语言开发环境的搭建。使用 Go 语言推荐使用 Mac 和 Linux 环境。搭建环境两步走,第一步安装,第二步设置 GOPATH 环境变量。

Mac 环境

使用 Mac 电脑的程序员一般都比较 Geek,安装开发类软件离不开 brew 命令。

$ brew install go

执行上面这个语句,你也许会等上一段时间,取决于你的网络状况。不出意外, 执行成功后 Go 语言的完整开发包就已经装进去了。Mac 会默认安装在下面的目录中,目录的最后一层是 Go 的版本号。目录里面包含 Go 的编译器程序、Go 的标准库、Go 的源码库和文档。

/usr/local/Cellar/go/1.10.3

安装程序会自动在 /usr/local/bin 下创建一个软连接 go 指向 /usr/local/Cellar/go/1.10.3/bin/go 编译器程序,于是你就可以在命令行里直接使用 go 命令了。如果你在命令汗里键入 go 命令,有下面这样的输出,那就是安装成功了。

$ go
Go is a tool for managing Go source code.

Usage:

    go command [arguments]
...

Linux 环境

Linux 环境的安装也很简单,使用下面这条指令在 ubuntu 下可以直接安装完成

$ apt-get install golang

如果你用的是红帽子或者 Centos 系统,那就使用下面的等价命令

$ yum install golang

Windows 环境

Windows 用户很悲催,需要下载 Go 语言的安装包,这很头疼,鉴于 Go 语言的官网被墙了,你需要代理穿越过去下载。如果你没有代理,那就使用搜索引擎找找非官方的下载包吧。这里我就不照顾你们了,建议你们使用虚拟机安装 Linux 吧。

设置 GOPATH 环境变量

Go 的开发包已经安装成功了,下面还需要设置一个重要的环境变量,这个环境变量就是 GOPATH,它指向一个目录,以后我们下载的第三方包和我们自己开发的程序代码包都要放在这个目录里面,它就是 Go 语言的工作目录。当你在源码里使用 import 语句导入一个包时,编译器都会来 GOPATH 目录下面寻找这个包。

Mac 和 Linux 用户的 GOPATH 通常都设置成 ~/go,也就是在 home 目录下建一个名为 go 的目录。将下面环境变量的设置命令追加到 ~/.bashrc 或者 ~/.zshrc 的文件末尾,然后重新打开命令行即可。

export GOPATH=~/go

在 Go 语言的早期版本中,还需要用户设置 GOROOT 环境变量。这个 GOROOT 环境变量指代 Go 语言开发包的目录,是上面提到的 /usr/local/Cellar/go/1.10.3。它类似于 Java 语言里面的 JAVA_HOME 环境变量。不过后来 Go 取消了这个环境变量的设置,也就是说用户可以不必再操心这个环境变量了,当它不存在就行。之所以这里提到它,是担心读者在网上看到某些文章时提到这个 GOROOT 变量会感到迷惑不解。

在哪里写代码?

如果你只是跑一下 demo ,写一个 main 方法,那么你可以在任意路径编写 main.go 文件,然后执行 go run main.go 就可以运行代码了。如果你要自己编写一个 package,那么就必须在 GOPATH 里面的指定路径来编写代码。

在基础学习阶段,大部分代码都是一个简单的 main 函数,所以对于源码路径没有限制。到了高级阶段,我们免不了要自己编写 package,这时候就必须在 GOPATH 目录下面工作了。

读者请尝试在任意目录下创建 main.go 文件,将代码贴进去。执行 go run main.go 命令观察输出结果是否是期望的 hello world!。

用什么编辑器写代码?

推荐使用 vscode,如果你觉得自己是一个 GEEK,那也可以使用 vim。不过 vscode 也有 vim 插件,所以还是推荐读者使用 vscode 。
vscode 的官方网站是 code.visualstudio.com/,首页有一个 Download 按钮,点进去选择你需要的安装包下载安装吧。
下面是作者使用 vscode 编写代码的截图,这是默认的 Dark 主题,不知道读者是否喜欢这个配色方案。不喜欢也没关系,vscode 提供了很多主题用户可以自己挑选。

思考题

如果你觉得本节对 GOPATH 环境变量解释的很浅显,请使用下面的命令来阅读 GOPATH 的更多细节,很遗憾,是全英文,而且内容很长。如果你是初学者,还是建议你成为 Go 语言老鸟以后再来阅读这些细节。

$ go help gopath

内容开头告诉我们 GOPATH 环境变量也可以不用设置了,因为编译器提供了默认值,这个默认值就是我们上面提到的 ~/go 目录。所以 Go 的开发工具是可以直接拿来即用的 —— 零配置。除非你觉得这个目录不好,想自己换一个,那就必须配置 GOPATH 环境变量了。

下一节 我们开始讲解 Go 语言的基础变量类型。

阅读《码农群英传》更多章节,用微信扫一扫上面的二维码关注公众号「码洞」

关注下面的标签,发现更多相似文章
评论
相关推荐
国内知名Wchat团队荣誉出品顶级IM通讯聊天系统

国内知名Wchat团队荣誉出品顶级IM通讯聊天系统 团队言语在先: 想低价购买者勿扰(团队是在国内首屈一指的通信公司离职后组建,低价购买者/代码代码贩子者/同行勿扰/基础版本低于30w勿扰) 。想购买...

test

<div style="margin-top:20px"> <el-tabs v-model="editableTabsValue" tab-...

测试标题

chenyuncaic...

我的测试文章

这里我的标题 非 这里是被信息,我希望得到备注 我的第二个标题...

f'g'h'g'h'f'g'h'g'f'h

发布告白夫妇...

nestjs+vue+ts打造一个酷炫的星空聊天室

简介😛 闲暇时间想做一个聊天室来巩固前端技能,于是在2020年6月24号就开始了阿童木聊天室的开发之旅。😈 项目采用全 typescript 开发,这是为了以后的功能迭代打基础。当然,我本身也是很...

好几个放假

东方红格当然多层次发鬼地方...

《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor

来源: 知乎 原文: 《快学 Go 语言》第 16 课 —— 包管理 GOPATH 和 Vendor 到目前位置我们一直在编写单文件代码,只有一个 main.go 文件。本节我们要开始朝完整的项目结构...

dddd

...

《快学 Go 语言》第 15 课 —— 反射

来源: 知乎 原文: 《快学 Go 语言》第 15 课 —— 反射 反射是 Go 语言学习的一个难点,但也是非常重要的一个知识点。反射是洞悉 Go 语言类型系统设计的法宝,Go 语言的 ORM 库离不...

hello

*《快学 Go 语言》第 14 课 —— 魔术变性指针来源: 知乎 原文: 《快学 Go 语言》第 14 课 —— 魔术变性指针 本节我们要学习一些 Go 语言的魔法功能,通过内置的 unsafe 包...

《快学 Go 语言》第 14 课 —— 魔术变性指针

来源: 知乎 原文: 《快学 Go 语言》第 14 课 —— 魔术变性指针 本节我们要学习一些 Go 语言的魔法功能,通过内置的 unsafe 包提供的功能,直接操纵指定内存地址的内存。有了 unsa...

《快学 Go 语言》第 13 课 —— 并发与安全

来源: 知乎 原文: 《快学 Go 语言》第 13 课 —— 并发与安全 上一节我们提到并发编程不同的协程共享数据的方式除了通道之外还有就是共享变量。虽然 Go 语言官方推荐使用通道的方式来共享数据,...

《快学 Go 语言》第 12 课 —— 通道

来源: 知乎 原文: 《快学 Go 语言》第 12 课 —— 通道 不同的并行协程之间交流的方式有两种,一种是通过共享变量,另一种是通过队列。Go 语言鼓励使用队列的形式来交流,它单独为协程之间的队列...

《快学 Go 语言》第 11 课 —— 千军万马跑协程

来源: 知乎 原文: 《快学 Go 语言》第 11 课 —— 千军万马跑协程 协程和通道是 Go 语言作为并发编程语言最为重要的特色之一,初学者可以完全将协程理解为线程,但是用起来比线程更加简单,占用...

测试发布

测试文章发布...

《快学 Go 语言》第 10 课 —— 错误与异常

来源: 知乎 原文: 《快学 Go 语言》第 10 课 —— 错误与异常 Go 语言的异常处理语法绝对是独树一帜,在我见过的诸多高级语言中,Go 语言的错误处理形式就是一朵奇葩。一方面它鼓励你使用 C...

《快学 Go 语言》第 9 课 —— 接口

来源: 知乎 原文: 《快学 Go 语言》第 9 课 —— 接口 接口是一个对象的对外能力的展现,我们使用一个对象时,往往不需要知道一个对象的内部复杂实现,通过它暴露出来的接口,就知道了这个对象具备哪...

《快学 Go 语言》第 8 课 —— 结构体

来源: 知乎 原文: 《快学 Go 语言》第 8 课 —— 结构体 本节我们要开讲 Go 语言在数据结构上最重要的概念 —— 结构体。如果说 Go 语言的基础类型是原子,那么结构体就是分子。分子是原子...

《快学 Go 语言》第 7 课 —— 字符串

来源: 知乎 原文: 《快学 Go 语言》第 7 课 —— 字符串 字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言...