安装参照了这篇文章,可以借鉴着看看
https://www.jianshu.com/p/5b9d14ef0fcd
下载
双击下载后的dmg
进行安装,安装成功后,打开终端,输入下面命令查看是否安装成功
go version
如果显示go version go1.8.1 darwin/amd64
那么恭喜你,安装成功。
打开终端,cd ~
进入主目录
ls -all
查看所有文件,看是否存在.bash_profile
文件
如果不存在,则执行touch .bash_profile
新建
如果存在,则执行vi .bash_profile
打开进行编辑
在文件中添加如下参数
export GOPATH=/Users/xxxxx/Go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
保存编辑,然后在执行source ~/.bash_profile
,完成环境变量的配置
go env
查看我们配置成功后的环境变量
说明:
GOPATH
:为我们开发常用的目录,建议不要和Go
的安装目录一致,在该文件夹下又有三个文件夹:src
、pkg
、bin
,这里src
我是自己新建的,pkg
和bin
是后面生成的。怎么生成的,后面会说到。
src
:主要存放我们的源代码
bin
:存放编译后生成的可执行文件,可以自己执行
pkg
: 编译后生成的文件(.a
文件)(非main
函数的文件在go install
后生成)
GOBIN
:是GOPATH
下的bin目录
PATH
:环境变量,需要go-bin
目录加入到path
路径下,生成可执行文件就可以直接运行了。
通过终端进入我们配置好的路径xxx\Go\src
中,新建一个文件夹hellotest
(mkdir hellotest
),新建一个hello.go
(vi hello.go
)文件,输入如下代码
package hellotestfunc HelloTets(s string) string { return string(s)}
保存退出后,在当前路径执行go install
,如果没有pkg
文件夹,那么执行成功后,会在xxx\Go
下面生成一个,并且生成一个go的执行
文件。
下面我们在建一个maintest
文件夹,然后新建一个main.go
文件,在其中输入下面的内容
package mainimport ( "fmt" "hellotest")func main() { fmt.Printf(hellotest.HelloTets("你说我该怎么说呢"))}
并在当前文件夹中,执行下面的命令
go build
也可以指定名称 go build hello.go
这样,我们就成功调用了之前的库文件,并且你会发现在当前文件夹中多了一个可执行文件maintest
没错,就是这样的一个执行文件。再执行下面的命令
./maintest
便会输出
你说我该怎么说呢
再执行
go install
这时我们的执行文件就不再存在改文件中,而是转移到了bin
文件夹中。
当然,我们也可以直接运行我们的main.go
文件,如下
go run main.go
注:刚开始的小坑
大写字母开头的变量是可导出的,也就是其它包可以读取的,是公有变量;小写字母开头的就是不可导出的,是私有变量。
大写字母开头的函数也是一样,相当于class
中的带public
关键词的公有函数;小写字母开头的就是有private
关键词的私有函数
错误
build cache is required, but could not be located: GOCACHE is not defined and $HOME is not defined
解决
执行 go env > go_env 将go env用到的环境变量写入到文件go_env (这个文件名可以随便定义)
然后再执行 sed -i "" "s/^/export /" go_env
然后将go_env追加到~/.bashrc中: cat go_env >> ~/.bashrc
最后执行source ~/.bashrc 让环境变量生效
然后会出现这个报错
build cache is disabled by GOCACHE=off, but required as of Go 1.12
解决
vim ~/.bash_profile
文件修改:
export GOPATH=/Users/xieyang/project/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN export GOCACHE="/Users/xieyang/project/go/cache"
source ~/.bash_profile
最后执行最上面的步骤
package main import "fmt" func main(){ fmt.Println("hello"); }
这里注意一下
Println 这个ln 是L的小写
坚持学习,成就自我