一、 Go經過package的方式來組織源碼git
package 包名
注意:任何一個源碼都屬於一個包github
做用:代碼複用和可讀性windows
二、可執行程序的包名必須爲main,而且包含一個main函數函數
package main import ( "fmt" ) func main() { fmt.Println(「hello world」) }
三、package組織案例例ui
再src/calc的包編輯完成後再pkg中blog
一、連接工程源碼
package main -- | 靜態連接it
|----------------------> 可執行文件編譯
pkg/windows_amd64/.../*.a ---|class
一、除了可執行程序以外,用戶能夠寫自定義包,自定義包編譯成靜態庫
package calc // package calc2 不建議這麼寫 // 包組織方式,自定義包 // 使用go install生成靜態庫 // calc_test中調用靜態庫 var ( Sum int ) func Add(a int, b int) int { return a + b } // 小寫方法名爲私有,不能調用 func sub(a int, b int) int { return a - b }
package main import ( "fmt" "github.com/gostudy/listen11/calc" // _ 沒有引用保留包 // _ "github.com/gostudy/listen11/calc" ) // 調用pkg\windows_and64\githbu.com\gostudy\listen11\calc.a // 執行全局變量,再執行init初始化 var a int = 10 var b int = 10 // init 函數,再main函數以前執行 func init() { fmt.Println(a, b) fmt.Println("init func in main") } // init函數能夠多個,能夠有多文件,多init,按編譯順序執行 // 1初始化sub 包 // 2初始化add import // 3初始化main func init() { fmt.Println("init2 func in main") } func main() { var sum = calc.Add(2, 3) fmt.Printf("sum=%d\n", sum) }
注意:go_path 要配置好路徑
一、go run運⾏行行go代碼, 若是有多個⽂文件,須要把全部⽂文件都寫到go run後⾯面
二、go build 編譯go代碼,若是是可執行程序,默認會在當前⽬目錄⽣生成可執行程序,能夠使⽤用-o指定可執行程序生成的目錄。
三、go install編譯go代碼,而且把可執行程序拷貝到GOPATH的bin目錄,自定義或第三方包會拷貝到GOPATH的pkg目錄
一、一個包里能夠有0個或多個init函數,在程序啓動時會被自動調用
package calc import ( "fmt" ) // 先執⾏行行全局 // 變量量初始化 var a int=10 // 而後再執行 // init函數 func init() { } // 最後執行 // main函數 func Add(a, b int) int{ return a+b }
二、 若是一個包import另一個包
一、_ 沒有引用保留包
package calc import ( 「fmt" _ 「sub」 ) func Add(a, b int) int{ return a+b }