关于go分文件编写的问题 | 青训营笔记

223 阅读1分钟

在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");
}