Mac下golang環境安裝以及新手入門

文章目錄
- 環境安裝
- 環境變數配置
- 標準命令詳解
- 運行Go
- 通過go命令運行
- 通過go命令編譯運行
- go的基本知識
- 注釋
- 字串連接
- 常見的基本錯誤
- golang學習倉庫地址
go 菜鳥教程
環境安裝
mac 環境 首先安裝brew
brew install go
執行完命令后,如下顯示:
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/services).
No changes to formulae.
==> Downloading https://mirrors.ustc.edu.cn/homebrew-bottles/bottles/go-1.11.2.m
######################################################################## 100.0%
==> Pouring go-1.11.2.mojave.bottle.tar.gz
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall go`
==> Caveats
A valid GOPATH is required to use the `go get` command.
If $GOPATH is not specified, $HOME/go will be used by default:
https://golang.org/doc/code.html#GOPATH
You may wish to add the GOROOT-based install location to your PATH:
export PATH=$PATH:/usr/local/opt/go/libexec/bin
==> Summary
🍺 /usr/local/Cellar/go/1.11.2: 9,282 files, 404MB
需要設定GOPATH和GOROOT的環境變數,以及設定PATH.
環境變數配置
通過go env查看go的詳細資訊
go env
需要設定的環境變數包括:GOPATH ,GOBIN 以及把GOBIN加入到PATH中,GOROOT變數默認已經設定好,
如果需要修改默認的環境變數配置修改 vim ~/.bash_profile 或者 vim ~/.zshrc
#GOROOT
# CentOS 中如下設定 GOROOT,看你安裝的路徑
# export GOROOT=/usr/local/go
# Mac OS 中通過命令列工具brew安裝如下配置 GOROOT
export GOROOT=/usr/local/opt/go/libexec
#GOPATH root bin
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
#GOPATH
#export GOPATH=$HOME/go
export GOPATH=/Users/wxq/go
#GOPATH bin
export PATH=$PATH:$GOPATH/bin
export GOPROXY=https://goproxy.io
使其立即生效
source ~/.bash_profile
然后在執行 go env的時候配置就會生效
環境變數設定完成!
標準命令詳解
go --help
Go is a tool for managing Go source code.
Go是用于管理Go源代碼的工具,
Usage用法:
go command [arguments]
The commands are:
build 命令用于編譯我們指定的原始碼檔案或代碼包以及它們的依賴包,
-o 指定輸出的檔案名,可以帶上路徑,例如 go build -o a/b/c
-i 安裝相應的包,編譯+go install
-a 更新全部已經是最新的包的,但是對標準包不適用
-n 把需要執行的編譯命令列印出來,但是不執行,這樣就可以很容易的知道底層是如何運行的
-p n 指定可以并行可運行的編譯數目,默認是CPU數目
-race 開啟編譯的時候自動檢測資料競爭的情況,目前只支持64位的機器
-v 列印出來我們正在編譯的包名
-work 列印出來編譯時候的臨時檔案夾名稱,并且如果已經存在的話就不要洗掉
-x 列印出來執行的命令,其實就是和-n的結果類似,只是這個會執行
-ccflags 'arg list' 傳遞引數給5c, 6c, 8c 呼叫
-compiler name 指定相應的編譯器,gccgo還是gc
-gccgoflags 'arg list' 傳遞引數給gccgo編譯連接呼叫
-gcflags 'arg list' 傳遞引數給5g, 6g, 8g 呼叫
-installsuffix suffix 為了和默認的安裝包區別開來,采用這個前綴來重新安裝那些依賴的包,-race的時候默認已經是-installsuffix race,大家可以通過-n命令來驗證
-ldflags 'flag list' 傳遞引數給5l, 6l, 8l 呼叫
-tags 'tag list' 設定在編譯的時候可以適配的那些tag,詳細的tag限制參考里面的http://golang.org/pkg/go/build/
clean 洗掉掉執行其它命令時產生的一些檔案和目錄,
-i 清除關聯的安裝的包和可運行檔案,也就是通過go install安裝的檔案
-n 把需要執行的清除命令列印出來,但是不執行,這樣就可以很容易的知道底層是如何運行的
-r 回圈的清除在import中引入的包
-x 列印出來執行的詳細命令,其實就是-n列印的執行版本
doc 命令可以列印附于Go語言程式物體上的檔案,
env 用于列印Go語言的環境資訊,
bug 啟動錯誤報告,
fix 把指定代碼包的所有Go語言原始碼檔案中的舊版本代碼修正為新版本的代碼,
fmt 在包源上運行gofmt,
-l 顯示那些需要格式化的檔案
-w 把改寫后的內容直接寫入到檔案中,而不是作為結果列印到標準輸出,
-r 添加形如“a[b:len(a)] -> a[b:]”的重寫規則,方便我們做批量替換
-s 簡化檔案中的代碼
-d 顯示格式化前后的diff而不是寫入檔案,默認是false
-e 列印所有的語法錯誤到標準輸出,如果不使用此標記,則只會列印不同行的前10個錯誤,
-cpuprofile 支持除錯模式,寫入相應的cpufile到指定的檔案
generate 通過處理源生成Go檔案,
get 下載或更新安裝指定的代碼包及其依賴包,并對它們進行編譯和安裝,
-d 只下載不安裝
-f 只有在你包含了-u引數的時候才有效,不讓-u去驗證import中的每一個都已經獲取了,這對于本地fork的包特別有用
-fix 在獲取原始碼之后先運行fix,然后再去做其他的事情
-t 同時也下載需要為運行測驗所需要的包
-u 強制使用網路去更新包和它的依賴包
-v 顯示執行的命令
install 用于編譯并安裝指定的代碼包及它們的依賴包,
list 列出指定的代碼包的資訊,
run 命令可以編譯并運行命令原始碼檔案,
test 對Go語言撰寫的程式進行測驗,
-bench regexp 執行相應的benchmarks,例如 -bench=.
-cover 開啟測驗覆寫率
-run regexp 只運行regexp匹配的函式,例如 -run=Array 那么就執行包含有Array開頭的函式
-v 顯示測驗的詳細命令
tool 運行指定的go工具
go tool fix . 用來修復以前老版本的代碼到新版本,例如go1之前老版本的代碼轉化到go1,例如API的變化
go tool vet directory|files 用來分析當前目錄的代碼是否都是正確的代碼,例如是不是呼叫fmt.Printf里面的引數不正確,例如函式里面提前return了然后出現了無用代碼之類的,
version 列印Go的版本資訊
vet 用于檢查Go語言原始碼中靜態錯誤的簡單工具,
Use "go help [command]" for more information about a command.
Additional help topics:
c calling between Go and C
buildmode description of build modes
filetype file types
gopath GOPATH environment variable
environment environment variables
importpath import path syntax
packages description of package lists
testflag description of testing flags
testfunc description of testing functions
Use "go help [topic]" for more information about that topic.
運行Go
我們先寫一段GO代碼,很簡單就是列印輸出一個hello world!, 保存為hello.go檔案
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
通過go命令運行
命令運行go程式,在hello.go這個當前目錄下運行下面命令,可以輸出hello world!,
go run hello.go
通過go命令編譯運行
GO程式的代碼是可以直接編譯成exe檔案 或者 二進制檔案直接運行,在hello.go目錄下運行下面命令,即可把go程式編譯成二進制檔案
go build hello.go
上面命令檔案可以編譯成一個hello可執行檔案,然后直接在當前目錄下 ./hello 運行,可以輸出hello world!,
go的基本知識
注釋
注釋不會被編譯,每一個包應該有相關注釋,
單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋,
多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾,如:
// 單行注釋
/*
hello WXiangQian
我是多行注釋
*/
字串連接
Go 語言的字串可以通過 ? 實作:
package main
import "fmt"
func main() {
fmt.Println("hello" + "WXiangQian")
}
常見的基本錯誤
- { 寫法
需要注意的是 { 不能單獨放在一行,所以以下代碼在運行時會產生錯誤:
package main
import "fmt"
func main()
{ // 錯誤,{ 不能在單獨的行上
fmt.Println("Hello, World!")
}
- 多余的 Imports
Go編譯器對Go程式非常嚴格,如果你不使用,就不要有多余的請求,在上面的代碼中,試圖引入os包,但是在代碼當中,并沒有使用,Go編譯器對這樣的行為嚴厲禁止,去掉第四行代碼之后,程式就能正確編譯運行,
- 命名區分大小寫
上述代碼中,列印函式寫的是fmt.println不是之前所寫的fmt.Println,Go語言區分大小寫,所以在編程時,要嚴格按照定義的方式進行參考和呼叫,
尤其注意Println的l不是i的大寫I!!!!!(ps:多次因為寫成PrintIn而被報錯,雖然有點白癡,但是請注意!
- 分號分行
如果你學過C、C++、Java、Perl等等,應該已經注意到Go(至少在前面的代碼中)沒有要求在陳述句的末尾添加分號,其實在Go語言中,會自動在一行的末尾添加分號,然而,如果在一樣有兩條運算式,需要用分號顯示的進行分割,
- 無效的分號
在import后面不可以同時加入兩個;第二個分號之前沒有任何有效的運算式,所以編譯器報了prog.go:3: empty top-level declaration錯誤,去掉多余的分號,程式可正確運行,
golang學習倉庫地址
https://github.com/WXiangQian/go-study
你的支持就是我更新的動力👍!!!
CSDN認證博客專家
PHP開發工程師
分享實戰經驗
作業地點:北京
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/203383.html
標籤:其他
上一篇:螞蟻集團暫緩上市:致歉投資者
