在go的学习当中,在尝试用go分文件编写的时候,发现了引用包的问题,并解决了。
话不多说,直接放示例:
分文件编写
在以main.go相对路径./myPath目录下面有两个Go文件:
mathadd.go:
package mathClass //包的名字要一致
func Submy(x, y int) int{
return x - y;
}
mathsub.go:
package mathClass
func Addmy(x, y int) int{
return x + y;
}
主文件:
// hello.go
package main
import "./myMath" //如果go处于go env -w GO111MODULE=off模式则能正常运行
import "fmt"
func myPrint(){
fmt.Println("start leran go program");
fmt.Println(mathClass.Addmy(2,4)); //使用package命名的mathClass引用
fmt.Println(mathClass.Submy(5,2));
}
func main(){
myPrint();
fmt.Println("end print");
}
在终端中运行,直接报错:
"./myPath" is relative, but relative import paths are not supported in module mode
说明go处于go env -w GO111MODULE=on模式
此时打开go.mod文件:
module gotest
go 1.20
require github.com/gin-gonic/gin v1.9.1
....//下面的内容我省略了
看向第一行的module gotest,用gotest替代相对路径 .,程序就正常运行了
package main
import "gotest/myMath"
import "fmt"
func myPrint(){
fmt.Println("start leran go program");
fmt.Println(mathClass.Addmy(2,4));
fmt.Println(mathClass.Submy(5,2));
}
func main(){
myPrint();
fmt.Println("end print");
}