导入包时仅初始化并不真正导入
默认导入一个包时,会将包中内容导入再执行包中的init()方法,有时并不需要某个包,只是想将执行该包的init()方法,可以导入时在包名前加下划线。如下所示
import _ "包名"
代码演示如下:
package main
import _ "fmt"
func main() {
fmt.Printf("%s\n", "hello world")
}
执行结果如下:
# command-line-arguments
usercode/file.go:6: undefined: fmt
这里导入fmt时只执行fmt中的init()方法,并没有导入fmt。(没研究fmt是否包含init()方法,仅用于说明。)
调用包时省略前缀包名
import . "fmt"
代码演示如下:
package main
import . "fmt"
func main() {
Printf("%s\n", "hello world")
}
此时引用fmt包中方法或变量时可以省略包名直接引用。
调用包时使用包的新名字
import f "fmt"
代码演示如下:
package main
import myPrint "fmt"
func main() {
myPrint.Printf("%s\n", "hello world")
}
此时引用fmt包中方法或变量时可以使用自定义的名字。
参考资料:https://studygolang.com/articles/4356