前言
我是一名iOS開發.
因為公司后台都用的Go.
因為對服務端不了解.
所以想自己學習學習.
環境
因為自己的電腦是mac.然后在阿里雲買的是centOS的服務器.
所以下面搭建的環境都是在centOS系統和MacOS系統下的.
一.學習資料
慕課網Go視頻教程
GitHub實戰教程19000星
beego教程
go視頻教程
二.安裝
1.1.安裝包安裝
Go官網下載安裝包
如下圖.一直點繼續即可.

安裝完成后在終端查看是否安裝成功

1.2.CentOS下用yum安裝
// 開始安裝
$ sudo yum install golang
// 驗證是否安裝成功
$ go version
1.3.MacOS下brew安裝
// 開始安裝
$ brew install go
// 驗證是否成功
$ go env
二.創建第一個GO工程

1.創建工程的文件夾GXGo
2.在GXGo文件夾里創建src/pkg/bin三個文件夾
3.在src里創建hello文件夾
4.在hello文件夾里創建main工程類
代碼如下

5.設置GOPATH
export GOPATH=~/Desktop/GXGo
查看是否設置成功

6.cd到hello文件夾路徑下.運行install命令

7.此時go就把hello類編譯成了可執行文件.
放在了GXGo/bin路徑下
cd到GXGo/bin路徑下

8.運行hello包

大功告成.你的第一個go項目跑起來了.
問題一.為什么要創建這三個文件夾呢.
因為GO規定的.
GO規定如下:
src: 存放源代碼(.go .c .h .s等)
pkg: 編譯后生成的文件 (如: .a)
bin: 編譯后生成的可執行文件(為了方便.可以把此目錄加入到$PATH變量中.如果有多個GOPATH,那么使用${GOPATH//://bin:}/bin添加所有的bin目錄)
三.環境變量解釋

Go安裝完成后.
他會提示你需要設置GOPATH和PATH兩個變量.
GOPATH
指的是你的go項目文件夾路徑如: ~/Desktop/GXGo
設置這個是為了能找到你項目文件路徑下的src/bin/pkg三個文件夾(這三個文件是需要你手動創建的.也是必須創建的)
這樣你運行go install的時候.go就會把編譯好的包放進GXGo/bin文件夾里.
PATH
PATH是linux自帶的一個變量.他相當於給某個文件夾A設置成快捷路徑.
你在任何路徑下都可以直接訪問文件夾A里的腳本.
你可以用終端打印一下PATH已經設置了哪些路徑.如下.

當我們運行了go install后.
編譯好的包就存放在GXGo/bin路徑下.
如果想運行這個包.
就需要cd到這個路徑下.
然后才能運行這個包.
這樣太麻煩了.
我們可以給PATH變量再添加一個快捷路徑.如下
export PATH=$PATH:~/Desktop/GXGo/bin
此時你再echo $PATH 就發現你剛才添加的路徑已經在里面了.如下

這樣我們就可以在任何路徑下都能運行GXGo/bin文件夾里的包了.
就不用如上跑到GXGo/bin下運行包文件了.
GOROOT
即你go包安裝的根路徑
一般是go自動設置好的.你可以使用go env查看一下.
如下GOROOT為/usr/local/Cellar/go/1.9.2/libexec
我們可以去這個路徑下查看是否有這個文件.如果有.那就表示不需要我們設置了
如果沒有.那就需要export GOROOT=<此處應為go的安裝根路徑>

四.包引用
現在我們運行了我們創建的第一個工程.
那如果我這個hello.go類想引用我寫的另一個string.go類的方法.
該怎么實現呢.
1.首先創建string.go類

2.代碼如下
這里Reverse方法實現的功能是吧字符串倒序輸出
如Hello => olleH

3.回到hello.go類
import string類.
在輸出的地方調用string類的Reverse方法.並且輸出返回結果

4.install
重新install hello.go類.
並且運行hello
發現結果成功變成了倒序.

小問題:
直接在終端export修改環境變量.
只在當前這次進程起作用
如果想永久性改變
需要修改~/.zshrc文件 (zsh用戶)
(bash用戶修改~/.bashrc)
將上面export的寫入~/.zshrc文件
然后運行source ~/.zshrc
五.單元檢測
你寫完了一個功能.沒有單元檢測肯定是不行的.
那單元檢測在go里怎么寫呢.
1.在string文件夾里創建string_test.go

2.代碼如下
這里是檢測了三種案例
Backward
Hello,世界
“”
並且給出了期望的正確結果

3.運行單元測試go test

4.發現出錯了.
我們發現中文亂碼了.
回到string.go類.
我們發現輸入的接受類型為byte.他不支持utf-8
那我們可以改成rune就可以了.如下

5.再次運行test
開不開森.運行成功啦.

作者:Sunxxxxx丶
鏈接:https://www.jianshu.com/p/6313e0460a44
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。