Mac下搭建go语言开发环境
1、安装Golang的SDK
http://golang.org ,下载最新的安装包,之后双击安装即可。
安装完成之后,打开终端,输入go、或者go version(查看安装版本)出现如下信息即表示安装成功:
$ go version
go version go1.5.1 darwin/amd64
2、配置环境变量
安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile
文件,存在既使用vim .bash_profile打开并编辑该文件。根据自己实际情况,内容如下:
export GOPATH=/usr/local/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN
GOPATH:日常开发的根目录。GOBIN:是GOPATH下的bin目录。
且需要gobin目录加入到path路径下,生成的可执行文件就可以直接运行了。
退出vim,使用source ~/.bash_profile即可完成对golang环境变量的配置了,可以在终端中输入go env查看配置后的效果:
$ go env
GOARCH="amd64"
GOBIN="/Users/lvtao/Documents/GOLang/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/lvtao/Documents/GOLang"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GO15VENDOREXPERIMENT=""
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common"
CXX="clang++"
CGO_ENABLED="1"
3、liteide使用
LiteIDE会预先为你在工程目录下创建main.go和doc.go文件。main.go文件中包含以下内容:
// Hello project main.go
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
你可以点击工具栏上蓝色的编译执行按钮BR运行代码。你可以在在Build菜单中的B和BR按钮菜单中找到更多的关于编译和执行代码的命令。
如果你运行了你的程序,你可以在底部的编译输出(Build Output)窗口中看到程序运行结果。
如果程序没有运行,那么很有可能是你创建的工程类型不对或者文件路径错误。
LiteIDE中还有很多功能等待你去发掘,不过目前为止的这些已经足够我们使用Go语言了。
4、终端编译运行
编译该源文件并执行生成的可执行文件
[root@localhost go-examples]# go build hello.go
[root@localhost go-examples]# ls
hello hello.go
[root@localhost go-examples]# ./hello
Hello,GO!
通过go build加上要编译的Go源文件名,我们即可得到一个可执行文件,默认情况下这个文件的名字为源文件名字去掉.go后缀。当然我们也可以通过-o选项来指定其他名字:
[root@localhost go-examples]# go build -o firstgo hello.go
[root@localhost go-examples]# ls
firstgo hello.go
如果我们在go-examples目录下直接执行go build命令,后面不带文件名,我们将得到一个与目录名同名的可执行文件:
[root@localhost go-examples]# go build
[root@localhost go-examples]# ls
go-examples hello.go
5、程序入口点(entry point)和包(package)
Go保持了与C家族语言一致的风格:即目标为可执行程序的Go源码中务必要有一个名为main的函数,该函数即为可执行程序的入口点。除此之外 Go还增加了一个约束:作为入口点的main函数必须在名为main的package中。正如上面hellogo.go源文件中的那样,在源码第 一行就声明了该文件所归属的package为main。
Go去除了头文件的概念,而借鉴了很多主流语言都采用的package的源码组织方式。package是个逻辑概念,与文件没有一一对应的关系。 如果多个源文件都在开头声明自己属于某个名为foo的包,那这些源文件中的代码在逻辑上都归属于包foo(这些文件最好在同一个目录下,至少目前 的Go版本还无法支持不同目录下的源文件归属于同一个包)。
我们看到hellogo.go中import一个名为fmt的包,并利用该包内的Printf函数输出"Hello, Go!"。直觉告诉我们fmt包似乎是一个标准库中的包。没错,fmt包提供了格式化文本输出以及读取格式化输入的相关函数,与C中的printf或 scanf等类似。我们通过import语句将fmt包导入我们的源文件后就可以使用该fmt包导出(export)的功能函数了(比如 Printf)。
在C中,我们通过static来标识局部函数还是全局函数。而在Go中,包中的函数是否可以被外部调用,要看该函数名的首母是否为大写。这是一种 Go语言固化的约定:首母大写的函数被认为是导出的函数,可以被包之外的代码调用;而小写字母开头的函数则仅能在包内使用。在例子中你也看到了 fmt包的Printf函数其首母就是大写的。
发表评论: