package main
import (
. "fmt"
"spikeSystem/jack" //需要把当前的目前名字上, jack是个目录名
//jack 目录下有个utilset.go的文件里面内容是
/*
package mypackage
import "fmt"
func MyTestFunc(){
fmt.Print("my func print")
}
*/
//"./tom" //有一个tom的目录
)
func main() {
//step1. 项目管理
//1.1 包导入,可以使用别名
/*
import (
"crypto/rand"
mrand "math/rand" // 将名称替换为mrand避免冲突
)
*/
//1.2 使用点操作
Println("使用点操作") //此时的需要这样导入包 import . "fmt"
//1.3 包的初始化
//init 优先于 main 方法运行
//1.4 包的匿名导入
/*
当我们导入一个包时,如果这个包没有被使用到,在编译时,是会报错的。
但是有些情况下,我们导入一个包,只想执行包里的 init 函数,来运行一些初始化任务,此时怎么办呢?
可以使用匿名导入,用法如下,其中下划线为空白标识符,并不能被访问
比如:
import _ "image/png"
*/
//1.5 导入的路径吗
/*
导入时,是按照目录导入。导入目录后,可以使用这个目录下的所有包。
出于习惯,包名和目录名通常会设置成一样,所以会让你有一种你导入的是包的错觉。
*/
//1.6 相对导入和绝对导入
//1.6.1 绝对导入
mypackage.MyTestFunc() //import的自定义包, "spikeSystem/jack"
//1.6.2 相对导入 - 开启 GO111MODULE 后,无法使用相对导入
//tompackage.Tomfunc() //需要把 export GO111MODULE=off 关了能使用相对, import "./tom" 直接这样使用
//1.7 包导入的优先级
/*
当我们导入一个包时,它会:
先从项目根目录的 vendor 目录中查找
最后从 $GOROOT/src 目录下查找
然后从 $GOPATH/src 目录下查找
都找不到的话,就报错。
*/
//step2. go modules 的应用
//todo
}