GO语言学习一 Hello World!

环境准备

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

go version

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

GOROOT与PATH环境变量

要使Go环境在你的计算机上正确运行,你需要至少对GOROOT和PATH这两个环境变量进行设置。
在类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

本书接下来的内容使用Windows系统下进行,但对于使用其他操作系统的读者来说,也应该不难理解。

第一个程序

现在让我们从最简单的hello world程序开始吧。
首先要为我们的第一个程序创建一个工作目录:

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

用任何你喜欢的文本编辑器把以下代码内容保存到工作目录下的hello.go文件

package main

import "fmt" // 导入fmt格式化输入输出
/* 这是
主函数
*/
func main() {
	fmt.Println("Hello World!/*这不是注释*/")
	fmt.Println("Hello World!//这也不是注释")
}

在命令行终端下使用以下命令编译一下:

go build

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

d:\go_proj> go_proj
Hello World!/*这不是注释*/
Hello World!//这也不是注释

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

注释

在上面的hello world程序中,已经展示了Go语言的注释的两种形式:

  1. 单行注释:以//开始,往后直到行尾都是注释
  2. 块注释:在/**/之间的内容是注释

注释不能出现在字符串中间。

程序结构

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

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

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

可以看到,上面的hello world程序虽然简单,但它已经包含了一个go语言可执行程序的所有元素。

包约定

Go程序是由不同的包链接到一起而构成的。一个包可以拆分成多个源文件,所以要使用包约定语句指出源文件所属的包:

package 默认包名

在go语言中一个可执行程序必须要有一个包名为“main”的主包,在源码文件hello.go中就是:

package main

导入声明

在使用包提供的功能时,就需要用导入声明来导入包。导入声明有两种形式,导入单个包:

import [包名] “包路径

导入一组包*:

import (
[包名] “包路径
{[包名] “包路径”}
)

  • []表示可出现0次或一次,{}表示可出现0次或多次。

Go语言标准库在%GOROOT%\src目录下有多种包,提供了许多功能。上面的hello world程序中导入的fmt包就是go语言标准库中的包,它提供了格式化输入输出的功能:

import "fmt"

这里没有指定包名,所以路径"fmt"内源码文件中包约定语句提供的默认包名"fmt"作为包名。

主函数

在go语言中一个可执行程序在主包中必须包含一个名为“main”的无参数且无返回值的主函数,作为应用程序的入口。
上面的hello world程序声明了一个名为main的函数:

func main(){
	fmt.Println("Hello World!/*这不是注释*/")
	fmt.Println("Hello World!//这也不是注释")
}

在其中调用了fmt包的Println函数,输出了两行文字。

GOPATH环境变量

除了Go语言标准库提供的包,还有很多第三方的包可以使用,用户也可以创建自定义的包。可以选择把这些包放入go语言标准库所在的目录,但更一般的做法是将它们放在自己定义的go目录树中,也就是GOPATH环境变量指出的目录。
如果没有设置 GOPATH环境变量,go语言环境缺省认为GOPATH在用户主目录的go目录(类UNIX系统上是$HOME/go,在windows系统上是%USERPROFILE%\go)。
GOPATH和PATH环境变量一样,可以有多个值。每个GOPATH目录都必须具有规定的结构:

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

导入声明会在%GOROOT%\src以及每个GOPATH的src目录下根据包路径查找要导入的包。
可以使用go get命令下载第三方包,下载的包存入第一个有效的GOPATH目录下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值