【03】helloworld 叩开 Go 编程的大门

murphyzhao · 2019-09-19 10:08:28 · 53829 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-09-19 10:08:28 的主题,其中的信息可能已经有所发展或是发生改变。

helloworld 叩开 Go 编程的大门

没有规矩不成方圆,在编程开始前,我们非常有必要了解下 Go 语言代码组织的基本规则和必要的要求。否则我们就是外行了。

为此,我们从编程入门第一个程序 helloworld 来看 Go 代码的组织结构。

Go 代码的组织结构

Go 工具规定 Go 代码必须放到 工作空间 内,并且 Go 工具规定了工作空间的目录结构。

什么是工作空间

简单来说,工作空间就是磁盘上的一个文件夹(一个目录)。类似于 C++ 中的 workspace。即,工作空间就是一个项目(工程)的根目录。

工作空间的目录结构

  • src:包含 Go 源文件
  • bin:包含可执行文件(二进制文件)

其中,src 中的源文件被组织成,src 中的每一个目录都对应一个包,也就是说 src 目录中都是一个个文件夹,每一个文件夹都是一个 Go 包(关于 Go 包请继续阅读)。

Go 工具用于将构建 Go 源文件,并将生成的二进制文件安装到 bin 目录。

关于 Go 包

工作空间中 src 目录下的所有文件夹都称为不同的 Go 包,源代码存放在对应的 Go 包中。

为了方便,也为了避免重复造轮子,Go 官方提供了一些(如 fmt),他们是 Go 标准库的一部分。

既然官方提供了 Go 包,并命名了名字(如 fmt),那么我们在写自己的包的时候,是不是就不能使用 fmt 这个名字了?

当然,Go 工具没有那么蠢。Go 工具约定,对于非标准库中的 Go 包,必须给选择一个基本路径

Go 工具建议使用代码托管工具中的用户名(如 github.com/user)作为基本路径。因为代码托管工具中的用户名是唯一的,这样就解决了基本路径可能冲突的问题,不失为一个很好的方式,简单明了。

第一个程序 helloworld

创建工作空间并设置 GOPATH 环境变量

前面有说到,GOPATH 环境变量指定了你的工作空间位置,是开发中唯一需要配置的环境变量。

$ mkdir /home/ubuntu/work/go_work
$ export GOPATH=/home/ubuntu/work/go_work

Go 工具为了方便执行生成的二进制可执行文件,约定将工作空间下的 bin 目录添加到 PATH 环境变量中,如下:

$ export PATH=$PATH:$GOPATH/bin

至此,工作空间已经配置完成。

创建 hello 包

$ mkdir $GOPATH/src/github.com/user/hello

这里的 user 需要替换为你自己的 github 用户名。

添加 helloworld 源码

$GOPATH/src/github.com/user/hello 目录下创建 hello.go 文件,并在文件内添加下面的代码:

package main
import "fmt"
func main() {
    fmt.Printf("Hello, world.\n")
}

代码说明:

  • 第一行 package main

    使用 package 关键字指定包的名字。Go 工具的第一个 Go 语句必须是 package 包名。但是,可执行文件必须使用 package main,相当于指定程序运行的入口。

    更多详细的描述,请参考 包名 章节。

  • 第二行 import "fmt"

    使用 import 关键字导入一个外部包。fmt 包用于格式化输出。

  • 第三、四、五行创建了一个 main 函数,花括号必须安装这个格式书写

    第四行使用 fmt 包中的 Printf 函数输出字符串 “Hello, world.”。

构建 helloworld 源码

$ go install github.com/user/hello

成功运行上述命令的前提是正确配置了 GOPATH 环境变量。

上述命令 Go 工具默认到 GOPATH 工作空间中查找 src 下的 github.com/user/hello 包中的源码。注意替换 user 为你自己的用户名

当然,你也可以在源码的根目录下执行,如下:

$ cd $GOPATH/src/github.com/user/hello
$ go install

执行完上述命令后,会生成一个可执行二进制文件,默认命名为 hello。执行完 go install 命令后,Go 工具会将 hello 二进制文件安装到工作空间下的 bin 目录中(即 $GOPATH/bin/hello)。

执行二进制程序

上述步骤成功后会在 $GOPATH/bin 目录下生成 hello 文件,这是一个可执行二进制文件。运行示例如下:

$ $GOPATH/bin/hello
Hello, world.

至此,我们已经成功编写、构建并执行了 hello 程序,成功输出了 hello world。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

53829 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传