一、 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 }