#### 包初始化流程
```
package main
import (
"fmt"
"runtime"
)
//1.先初始化函數
func init() {
fmt.Printf("map: %v\n", m)
info = fmt.Sprintf("os: %s, arch: %s", runtime.GOOS, runtime.GOARCH)
}
//2.然后初始化全局變量
var m = map[int]string{1:"A", 2:"b", 3:"c"}//已初始化
var info string //未初始化
//3.最后執行main函數
func main() {
fmt.Println(info)
}
執行結果:
map: map[1:A 2:b 3:c]
os: darwin, arch: amd64
```
#### go build
```
編譯生成計算機可識別的二進制文件
go文件------go build(編譯)-----exe----執行
指定可執行文件的文件名
go build -o 文件名.exe hello.go
```
#### go run
```
編譯運行一步
```
#### 區別
```
1.編譯生成的可執行文件,在沒有go開發環境的機器上也可以運行
2.編譯時,編譯器會將程序運行依賴的庫文件包含在可執行文件中,所以可執行文件變大了
```
- 認識Golang
- 環境配置
- 找不到包
- civil
- 語言基礎
- 執行流程
- 標準命令
- 輸入輸出
- 常量與變量
- 常量的定義和使用
- 變量
- 枚舉
- 數據類型
- 結構體
- 定義和使用
- 函數參數
- 普通數據類型
- 數值型
- 整型
- 浮點類型
- 布爾
- 字符
- 字符串
- 類型轉換
- 復雜數據類型
- 指針
- 定義和使用
- 空指針
- 野指針
- new
- 函數參數
- 數組
- 定義
- 切片
- 切片
- Map
- 定義和使用
- 流程控制
- if
- switch
- for
- break
- continue
- goto
- 函數
- 函數的定義與使用
- 不定參函數
- 函數返回值
- 作用域
- 匿名函數
- 閉包
- 傳值方式
- 常用函數
- 日期
- 包
- 面向對象
- 異常處理
- 文件讀寫
- 正則
- io
- Reader
- Writer
- 接口
- 測試
- os
- json
- Marshal
- Unmarshal
- 網絡編程
- go程
- runtime
- channel
- 無緩沖channel
- 關閉channel
- 單向channel
- 生產者消費者模型
- 定時器
- tcp
- tcp_server
- tcp_client
- tcp_server_并發
- tcp_client_并發
- 常用框架
- http
- server
- get
- head
- 爬蟲
- 百度貼吧
- 百度貼吧( 并發)
- GTK
- beego
- 環境搭建
- model
- 增
- 刪
- 改
- 查
- 模塊
- context
- httplib
- etcd
- 簡介
- 安裝
- 使用
- net/html
- goquery
- redis
- redigo
- 爬蟲
- gocolly/colly
- 區塊鏈
- 微服務
- 服務發現
- consul
- 簡介