import匿名及别名导包方式

275 阅读1分钟

代码目录结构

image.png

main.go:

package main

import (
   //正常导包
   "Go_Workspace/Golang_Study_Example/5-init/lib1"

   //匿名导入,无法使用当前包的方法,但会执行当前包的内部init()方法
   _ "Go_Workspace/Golang_Study_Example/5-init/lib1"

   //包的别名
   mylibi2 "Go_Workspace/Golang_Study_Example/5-init/lib2"

   //直接调用容易重名
   //. "Go_Workspace/Golang_Study_Example/5-init/lib2"
)

func main() {
   //lib1.Lib1Test()
   //lib2.libTest()

   lib1.Lib1Test()    //正常导包
   mylibi2.Lib2Test() //包的别名
   //Lib2Test()         //. 直接调用
}

lib1.go:

package lib1

import "fmt"

// 当前lib1包提供的api
//方法首字母大写代表此方法是一个对外开放的接口
//小写则代表此方法只能在本包内调用
func Lib1Test() {
   fmt.Println("lib1Test()......")
}

func init() {
   fmt.Println("lib1.5-init()......")
}

lib2.go:

package lib2

import "fmt"

// 当前lib2包提供的api
func Lib2Test() {
   fmt.Println("lib2Test()......")
}

func init() {
   fmt.Println("lib2.5-init()......")
}

输出结果

image.png