go - 如何从相对本地文件夹中导入“包含”意义上的 .go 文件
问题描述
我正在尝试包含一个“.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 学徒开始时不一定很容易理解,但一旦“理解”,它就更合乎逻辑,特别是对于“包含”方法而不是在其他方法中找到它语言。
希望这对其他人更好的代码文件组织有用 (当然有更好的方法,但目前这个满足我的需要)
推荐阅读
- javascript - Chrome 扩展 - Keyup 上的过滤表
- django - 从 my_model.objects.all() 获得的对象数组中创建一个表单(用于批量编辑)
- excel - 宏中福昕的快捷键
- php - Laravel 身份验证不适用于特定用户
- ruby-on-rails - 在 Rails 中,我可以在不更新数据库的情况下过滤一对多关系吗
- ros - ROS服务提供者需要订阅客户端主题
- asp.net-core - 从 Entity Framework Core 重置迁移
- c# - c# Global Keyboard Hook: 识别按键来自哪个键盘
- java - SpringBoot Maven 项目
- java - 简单的 P2P 服务器,对象在从服务器中继后损坏