環境
Go 下載安裝
推薦去 Golang 中文社區下載 Go 編譯器 官方下載
傻瓜式安裝即可
安裝完成之後開啟 cmd ,輸入go version
成功輸出版本號碼則代表安裝成功
Go 環境變數
關於 Go 的環境變數的問題 seaconch 就在剛才突然想到了比較貼切的形容方式
1. GOROOT
GOROOT 常被描述為 Go 編譯器的路徑
GOROOT 不需要我們去配,一般安裝 GO 編譯器時選擇的路徑就是 GOROOT 路徑
seaconch 補充一點:import 包時,原生 pkg 也是根據 GOROOT 來引用的
所以說使用過 npm 的同學可以理解為:全域包路徑
2. GOPATH
GOPATH 常被描述為 Go 源碼(工程)路徑
GOPATH 需要我們去手動設定,當然如果只是隨便寫個 demo 練手,不配也無妨
seaconch 認為 GOPATH 有點像 npm 的當地套件路徑
3. 補充
其實並不是說不在這兩個目錄下就不可以引入包,例如我們就可以通過 ../pkg 的方式引入並使用我們自己寫的包沒有問題,並且只要保持他們的相對路徑關係不變,那麼複製到哪裡都是可以運行起來的,缺點是不可以執行 go install 命令
Hello World 斥候
在任意位置建立一個記事本
輸入下列代碼
package mainimport "fmt"func main () { fmt.Println("seaconch.")}
將檔案儲存為 a.go 注意尾碼名,確保不是 .txt
在 a.go 所在路徑運行 cmd 輸入 go run a.go
可以看到成功輸出了 seaconch.
輸出中文的小夥伴現在還不要著急,因為目前還不是 utf-8 編碼
常用命令
go run xxx.go
調試神器,無需 build 直接執行代碼;在特殊情況下需要批量 run,例如 go run main1.go main2.go
註: main1.go 與 main2.go 同包 並屬於 extension 關係
go build xxx.go
編譯源碼,產生可執行程式;在特殊情況下需要批量編譯,例如 go build main1.go main2.go
go install
編譯產生項目可執行檔,預設產生在 GOPATH 目錄下的 bin 目錄中
變數與資料類型
變數
define variable : var 變數名 類型
舉個栗子
- var _name string
- var (
- _name string
- _age int
- )
simple define : 變數名 := 運算式
該方式只適用於函數內部
舉個栗子:
- _name := "seaconch"
- _name, _age := "seaconch", 99
註:變數名稱區分大小寫
特色
在 Go 語言當中,變數的操作有三個比較明顯的特色
:=
該方式只適用於未被 define 過的變數,並且只可以在 func 內部使用
x, y := y, x
經典的變數交換值得問題在 Go 語言中非常簡單,只是像這樣而已
_
因為 Go 語言中,多傳回值特別常見,當我們只需要多個傳回值之中的個別值時,可以採用 name, _ := 方法() 的方式可以捨棄第二個傳回值,這種類似的方式達到想要的效果
常量
常量需要有初始值
define
舉個栗子:
const _pi float64 = 3.14 /
const _version string = "v1.0"
多賦值
const (
A = 1BC = 2D
)
多賦值情況下,預設不賦值的常量使用上一個常量的值,因此 B = 1, D = 2
通過使用 iota 來表示枚舉:
const ( sunday = iota monday tuesday wednesday= 88 thursday friday = iota saturday)
sunday -> 0
monday -> 1
tuesday -> 2
wednesday -> 88
thursday -> 88
friday -> 5
saturday -> 6
可以看出 iota 的作用了吧, iota 有一點像是一個計數器,seaconch 拋磚引玉,用這個小例子來說明其用途
整數
int 整形,會根據 cpu & ide 決定 64 / 32
uint 無符號 int
byte == uint8 可以理解為類型別名
rune == int32 可以理解為類型別名
浮點
float32 / float64 精度不同
複數跳過
布爾型
布爾型有兩點需要主要:
- 預設值為 false
- Golang 中1 與 true 0 與 false 沒有可比性
字串
截取字串:
_str := "hello seaconch." fmt.Println(_str[:]) -> hello seaconch. fmt.Println(_str[7:]) -> eaconch. fmt.Println(_str[:8]) -> hello se fmt.Println(_str[7:8]) -> e
看碼會意~
7 <= 目標字串的索引 < 8
好了,今天就到這裡吧