GO语言学习一 Hello World!

环境准备

Go语言当前支持Windows、MacOS、Linux三大主流PC平台,另外也提供了源码包,开发者可以为自己的平台编译安装。
不论是使用了安装器还是从源代码编译安装,在那之后,都需要确保环境已经正确配置好了。打开一个命令行终端,输入命令:

go version

如果你的终端上显示的内容有类似于“not found”或“not recognnized”这样的错误信息,意味着你需要对你的go运行环境作一些准备工作。

GOROOT环境变量

在类Unix系统中,你可以使用export来设置环境变量,也可以通过类似.bashrc这样的配置文件让设置在每次登录时都有效:(假设您的go安装在$HOME/opt/go目录下)

export GOROOT=$HOME/opt/go
export PATH=$PATH:$GOROOT/bin

在Windows中,可以通过set命令来设置GOROOT,也可以通过在高级系统设置-环境变量中的配置让设置在每次登录时都有效:(假设您的go安装在d:\go目录下)

set GOROOT=d:\go
set PATH=%PATH%;%GOROOT%\bin

现在你应该可以在命令行窗口中使用go version命令来查看go版本了,以下是Windows下的正常运行结果:

C:\> go version
go version go1.11.1 windows/amd64

第一个程序

为每个项目创建一个工作目录是个好习惯。
在类Unix系统下我们来创建一个$HOME\go_proj目录作为我们的工作目录:

~$ mkdir $HOME/go_proj
~$ cd $HOME/go_proj
~/go_proj$ 

在Windows系统下我们可以这样创建:

c:\> md d:\go_proj
c:\>cd /d d:\go_proj
d:\go_proj>

不管在哪个系统下,我们把创建出来go_proj称为我们的工作目录了。
现在让我们从最简单的hello world程序开始吧。把以下内容保存到工作目录下的hello.go文件

package main

import "fmt"

func main() {
	fmt.Println("Hello World!")
}

编译一下:

go build

可以看到,在工作目录下多了一个名为go_proj的可执行程序。试着运行它看看:

d:\go_proj> go_proj
Hello World!

如果你看到上面的输入,就表示我们的第一个程序可以正确工作啦!

程序结构

Go语言的源代码文本使用Unicode字符集UTF-8编码保存,这一点请童鞋们记一记哦!(字符集和编码规则不是本书要讨论的)

Go语言源代码从结构上说由三部分构成:

  1. package语句:必须。指出本源码文件属于哪个包。
  2. import声明:非必须。指出本源码文件使用了哪些个包。
  3. 程序主体:非必须。除开以上两部分都属于程序主体。

可以看到,上面的hello world程序虽然简单,但它已经包含了一个go语言可执行程序的所有元素。在go语言中一个可执行程序必须要有一个包名为“main”的主包,以及一个函数名为“main”的无参数且无返回值函数。

Go程序是把不同的包链接到一起而构成的。一个包可以拆分成多个源文件,只要在源文件中使用package语句指出它所属的包就可以了。

导入

Go语言标准库提供了大量的包,这些包存在于go安装目录(参见GOROOT环境变量)下的src目录内,它们可以完成许多功能。Hello world程序中导入的fmt包就是go语言标准库提供的包。它提供了格式化输入输出的功能。
import声明有两种格式:

import "包路径"
import (
	"包1路径"2别名 "包2路径"
)

除了Go语言标准库提供的包,还有很多第三方的包可以使用,用户也可以创建自定义的包。我们可以选择把这些包放入go语言标准库所在的目录,但更一般的做法是将它们放在自己定义的go目录树中,也就是GOPATH环境变量指出的目录。

GOPATH环境变量

缺省情况下,GOPATH在用户主目录(类UNIX系统上是$HOME,在windows系统上是%USERPROFILE%)的go目录。
GOPATH和PAH环境变量一样,可以有多个值。import语句会在每个GOPATH目录下搜索要导入的包。
每个GOPATH目录都必须具有规定的结构:

  • src 目录存放包的源代码,其下的每个子目录就是import声明中的包路径
  • pkg目录存放已经安装的包对象
  • bin 目录存放已经编译了的程序

可以使用go get命令下载第三方包,下载的包存入第一个有效的GOPATH目录下。

猜你喜欢

转载自blog.csdn.net/finalday/article/details/85063042