main.goGOROOT\src
目标
目标一:实现跨包情况下,两个不同文件之间的函数调用
目标二:实现在同一级目录下,不同文件之间的函数调用
实现目标一
main.gopackage
目录结构
bubbleSort.go
package SortAlgorithm
// 注意必须要令函数的开头大写,才能表示公开使用
func BubbleSort(arr []int) []int {
length := len(arr)
for i := 0; i < length; i++ {
for j := 0; j < length-1-i; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
return arr
}
解决方案
packageGOROOT
gorootpackage
go envGOROOTSortAlgorithmpackageD:\Go\src
SortAlgorithm\BubbleSort\BubbleSort1.goimport "SortAlgorithm/BubbleSort"
code runner
go mod init
GOROOTGOROOTGO
GOROOTSortAlgorithmpackage
go mod init 任意名称(我这里写sa)go.modgo.mod
module sa
go 1.18
go.mod
main.go
package main
import (
"fmt"
//最终要按照mod的任意名称在你的package前加上即可
"sa/SortAlgorithm"
)
func main() {
arr := []int{10, 2, 5, 6, 9}
fmt.Println(SortAlgorithm.BubbleSort(arr))
}
实现目标二
目录结构
main.goSortAlgorithm
方案一:命令方法
code runner
命令一:
go run main.go bubbleSort.go
注意:
bubbleSort.gopackage SortAlgorithmpackage main
命令二:
go run .
注意:
package mainD:\Go\src
碰壁历程(可以不看)
main.goGOROOR\src
path is relative, but relative import paths are not supported in module mode
后面就找到了放入到GOROOT的博客方法,但是我怎么可能满足用这种垃圾方法,所以我就继续找,但是绝大多数都是大失所望()
GOROOTGOPATH
go mod init
而同级目录和跨包情况则是看到了这篇博客(其实没解释清自己的环境和具体操作,最终也就无法复现结果):