1. 包的导入两种写法
import ( "fmt" "log" ) func main() { fmt.Println("test import package") log.Default() } import "fmt" import "log" func main() { fmt.Println("test import package") log.Default() }
2. 如果使用包名称一样,需要给其中一个添加别名
package main import ( "demo/pack/p1" p12 "demo/pack1/p1" "fmt" "log" ) func main() { fmt.Println("test import package") log.Default() p1.Test1() p12.Test4() }
3. 如果使用方法不想添加包名,可以通过. 的方式import(不推荐,可能存在相同的方法),会提示错误
package main import ( "demo/pack/p1" . "demo/pack1/p1" "fmt" "log" ) func main() { fmt.Println("test import package") log.Default() p1.Test1() Test4() }
4. 如果只想初始化某个包,不想使用里面的函数,可以使用_ 方式 import
_ "demo/pack1/p1"
5. 所有的代码包init 函数会在 main 函数执行前,执行完毕。 先执行import 中的init 方法(多个包之间按import 顺序,和调用里面的函数顺序 无关)
package main import ( "demo/package/p1" . "demo/package1/p1" "fmt" ) func init() { fmt.Println("this is main package init") } func main() { Test4() p1.Test1() } package p1 import "fmt" func init() { fmt.Println("this is p1 package init") } func main() { } func Test1() { fmt.Println("this is package 1 test1 func") } package p1 import "fmt" func init() { fmt.Println("this is p4 package init") } func main() { } func Test4() { fmt.Println("this is package p1 func test4") }
输出结果:
this is p1 package init
this is p4 package init
this is main package init
this is package p1 func test4
this is package 1 test1 func