go - goimports 未检测到本地包
问题描述
我的 golang 项目在不同的文件夹中有几个包,这些包变得有点大。我一直在尝试创建单独的包,但没有被 goimports 检测到
GOPATH="/home/malek/go:/home/malek/Desktop/Workspace"
GORACE=""
GOROOT="/usr/local/go"
我的目录是这样的,
Workspace -> src -> application -> utility -> math.go
在我的 math.go 文件夹中,我有包实用程序
但是当我尝试做import "application/utility"
或尝试在我的 main.go 文件(在应用程序文件夹中)中包含 math.go 文件中的公共函数时,我得到未定义的......
我究竟做错了什么?
解决方案
您尚未向我们提供重现问题的具体步骤。我看不出有什么问题。goimports -w main.go
作品。例如,
application/main.go
之前goimports -w main.go
:
package main
import (
"fmt"
)
func main() {
fmt.Println(utility.PiE())
}
application/utility/math.go
:
package utility
import "math"
func PiE() float64 { return math.Pi * math.E }
命令:
#
cd $HOME
cd $HOME/Desktop/Workspace
rm -f src/application/application
cp src/application/main.bak src/application/main.go
tree
cd $HOME/Desktop/Workspace/src/
cat application/utility/math.go
cd application
export GOPATH=$HOME/gopath:$HOME/Desktop/Workspace
go env GOPATH
cat main.go
go build -a
goimports -w main.go
cat main.go
go build -a && ./application
#
输出:
~$ #
~$ cd $HOME
~$ cd $HOME/Desktop/Workspace
~/Desktop/Workspace$ rm -f src/application/application
~/Desktop/Workspace$ cp src/application/main.bak src/application/main.go
~/Desktop/Workspace$ tree
.
└── src
└── application
├── main.bak
├── main.go
└── utility
└── math.go
3 directories, 3 files
~/Desktop/Workspace$ cd $HOME/Desktop/Workspace/src/
~/Desktop/Workspace/src$ cat application/utility/math.go
package utility
import "math"
func PiE() float64 { return math.Pi * math.E }
~/Desktop/Workspace/src$ cd application
~/Desktop/Workspace/src/application$ export GOPATH=$HOME/gopath:$HOME/Desktop/Workspace
~/Desktop/Workspace/src/application$ go env GOPATH
/home/peter/gopath:/home/peter/Desktop/Workspace
~/Desktop/Workspace/src/application$ cat main.go
package main
import (
"fmt"
)
func main() {
fmt.Println(utility.PiE())
}
~/Desktop/Workspace/src/application$ go build -a
# application
./main.go:8:14: undefined: utility
~/Desktop/Workspace/src/application$ goimports -w main.go
~/Desktop/Workspace/src/application$ cat main.go
package main
import (
"application/utility"
"fmt"
)
func main() {
fmt.Println(utility.PiE())
}
~/Desktop/Workspace/src/application$ go build -a && ./application
8.539734222673568
~/Desktop/Workspace/src/application$ #
application/main.go
之后goimports -w main.go
:
package main
import (
"application/utility"
"fmt"
)
func main() {
fmt.Println(utility.PiE())
}
推荐阅读
- machine-learning - 机器学习问题中的特征选择
- php - 如何使用 php 和 TCPDF 在 pdf 中绘制虚线?
- regex - 正则表达式替换异常
- docker - 使用 netcat 连接到运行 golang 服务器的 docker 容器
- excel - 显示编译错误:检测到不明确的名称,同时重载函数
- python-3.x - Django Rest如何使用lookup_field获取多个对象
- android - Android textinputlayout 在向布局添加左侧填充时我在右侧获得了等量的空间,它看起来像一个边距
- string-parsing - Univocity - 解析一行固定宽度的平面文件 - 300 个并行线程的性能影响
- c# - C# bool 并以简洁的方式打开关闭功能?
- pandas - 每组的活动时间差异