我正在尝试包含一个“.go”文件,其中包含一些我在不同的独立项目中需要的结构声明
目前错误如下:
main.go:8:2: module include@latest found (v0.0.0, replaced by ./include), but does not contain package include/declare
树结构:/home/dev/go/sample
include/
main.go
go.mod
/home/dev/go/sample/include
declare.go
go.mod
/home/dev/sample/go.mod 的内容:go 1.14
module include
replace include v0.0.0 => ./include
/home/dev/sample/include/go.mod 的内容:module include
go 1.14
require include v0.0.0
replace include v0.0.0 => include
从“main.go”导入:package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"include/declare"
)
谢谢
最佳答案
在@enzo 提出的刻苦阅读之后,我的请求现在可以使用了
样本结构:
├── go.mod
├── include
│ ├── sourceA.go
│ └── sourceB.go
└── myapp.go
解决方案是在主应用程序级别创建一个简单正确的“go.mod”文件。就我而言,不需要在“包含”文件夹中有一个go mod init <name of your app>
go.mod 文件的内容:MyApp module
go 1.14
include/sourceA.go 的内容:package include
const ValueA = "a value from sourceA.go"
func FunctionA () {
println("Hello: sourceA.go")
}
include/sourceB.go 的内容:package include
const ValueB = "a value from sourceB.go"
func FunctionB () {
println("Hello: sourceB.go")
}
myapp.go 的内容:package main
import "myapp/include"
func main() {
include.FunctionA()
include.FunctionB()
println(include.ValueA)
println(include.ValueB)
}
导入管理(一切都是模块/包)在 Go 学徒开始时不一定很容易理解,但一旦“理解”,它就更合乎逻辑,特别是对于“包含”方法比在其他方法中找到它语言。希望这对其他人更好的代码文件组织有用
(当然有更好的方法,但目前这个满足我的需要)
关于go - 如何从相对本地文件夹导入 "include"意义上的 .go 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63274583/