go mod 的使用及解答学习以来的疑惑(go mod 目录、包名、import之间的关系)
mkdir learngo
cd learngo && mkdir pkg pkg2
cd pkg
touch pkg1.go pkg2.go
cd ..
touch pkg21.go pkg22.go
cd ../..
go mode init learngo
目录结构
learngo-[
- pkg-[
pkg1.go
pkg2.go
]
- pkg2-[
pkg21.go
pkg22.go
]
go.mod
main.go
]
// pkg1.go
package pkg
import "fmt"
func A() {
fmt.Println(454654564656)
}
// pkg2.go
package pkg
import "fmt"
func B() {
fmt.Println(454654564656)
}
// pkg1.go
package pkg
import "fmt"
func A() {
fmt.Println(454654564656)
}
// pkg21.go
package pkg2
import "fmt"
func B() {
fmt.Println(454654564656)
}
// pkg22.go
package pkg2
import "fmt"
func B() {
fmt.Println(454654564656)
}
// go.mod
module learngo
go 1.14
// main.go
package main
import (
"fmt"
pkgaaa "learngo/pkg"
pkgbbb "learngo/pkg2"
)
func main() {
pkgaaa.A()
pkgaaa.B()
pkgbbb.A()
pkgbbb.B()
}
结论:import只是导入目录名,相当于添加了PATH变量,而和目录下的包名没有任何关系,但是同一目录下的包名必须相同
本作品采用《CC 协议》,转载必须注明作者和本文链接