条件
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

而同级目录和跨包情况则是看到了这篇博客(其实没解释清自己的环境和具体操作,最终也就无法复现结果):