包的理解
首先,包的概念类似于Java中的类,直接在包中写方法,引入的时候也是直接引这个包,通过包来调用方法。
需要注意的是,在一个文件夹下只能有一个同名的包,假如想创建一个新的包就必须新建一个文件夹,另外要引入别的包的方法必须将这个方法首字母大写,否则这个方法会被视为私有方法。
同一个文件夹下的同一个包中的方法不论首字母是否大写,在另外同一包中的不同文件中就能直接使用。
不同文件下的包就算名字相同也会被视为不同的包。
在Go中完全禁止循环导入,不管是直接的还是间接的。例如包A导入了包B,包B也导入了包A,这是直接循环导入,包A导入了包C,包C导入了包B,包B又导入了包A,这就是间接的循环导入,存在循环导入的话将会无法通过编译。
不论是直接循环导入还是间接循环导入,都会导致编译不通过。
包的匿名导入:
导入包的时候在前面加上_就表示当前这个包是匿名导入的,这个时候就不能使用该包下的其他函数,而默认会对init方法进行调用。
package main
import (
"fmt"
_ "math" // 下划线表示匿名导入
)
func main() {
fmt.Println(1)
}