如何不使用gopath导入本地包

2024-03-12

我用过GOPATH但对于我当前面临的这个问题,它没有帮助。我希望能够创建特定于项目的包:

myproject/
├── binary1.go
├── binary2.go
├── package1.go
└── package2.go

我尝试了多种方法,但如何得到package1.go工作于binary1.go or the binary2.go等等?

例如;我希望能够import "package1"然后就可以运行go build binary1.go一切正常,不会抛出无法找到包的错误GOROOT or GOPATH。我需要这种功能的原因是为了大型项目;我不想引用多个其他包或将它们保存在一个大文件中。


Go依赖管理总结:

  • vgo如果你的版本是:x >= go 1.11
  • dep or vendor如果你的版本是:go 1.6 >= x < go 1.11
  • 手动如果你的版本是:x < go 1.6

编辑3:Go 1.11有一个功能vgo这将replace https://github.com/golang/go/wiki/vgo#current-state dep.

To use vgo, see Modules https://github.com/golang/go/wiki/Modules文档。 TLDR如下:

export GO111MODULE=on
go mod init
go mod vendor # if you have vendor/ folder, will automatically integrate
go build

该方法创建一个名为go.mod在您的项目目录中。然后您可以使用以下命令构建您的项目go build. If GO111MODULE=auto设置了,那么你的项目就不能在$GOPATH.


编辑 2:供应商方法仍然有效并且没有问题。vendor很大程度上是一个手动过程,因此dep and vgo被创造。


编辑1:虽然我的旧方法有效,但它不再是“正确”的方法。你应该使用vendor能力,vgo, or dep(目前)在 Go 1.6 中默认启用;。您基本上将“外部”或“依赖”包添加到vendor目录;编译时,编译器将首先使用这些包。


成立。我可以导入本地包GOPATH通过创建子文件夹package1然后导入import "./package1" in binary1.go and binary2.go像这样的脚本:

二进制1.go

...
import (
        "./package1"
      )
...

所以我当前的目录结构如下所示:

myproject/
├── binary1.go
├── binary2.go
├── package1/
│   └── package1.go
└── package2.go

我还应该注意到相对路径(至少在 go 1.5 中)也可以工作;例如:

import "../packageX"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何不使用gopath导入本地包 的相关文章

  • 练习:网络爬虫 - 并发不起作用

    我正在经历 golang 之旅 并致力于最后的练习 以将网络爬虫更改为并行爬行而不是重复爬行 http tour golang org 73 http tour golang org 73 我所改变的只是抓取功能 var used make
  • 在 C 中使用 Go 切片

    我正在尝试构建一个带有返回切片的函数的 go 共享库 如何使用 C 代码中的切片 package main import C type T struct A C int B C char export Test func Test T ar
  • Go TCP 读取是非阻塞的

    我正在尝试用 Go 创建服务器和客户端 我已经成功地与服务器和客户端进行通信 但我遇到的问题是golang中的TCP读取是非阻塞的 我想知道 golang 中的读取是否有可能像 C 中的读取一样阻塞 谢谢 EDIT 这是服务器的源代码 fu
  • 如何组合杜松子酒中的路线组? [复制]

    这个问题在这里已经有答案了 我创建了两个不同的组gin具体路由 user and todo在两个不同的包中 我想将它们合并到一个文件中 这是我的userroutes go file package userrouter import git
  • Golang 结构继承没有按预期工作?

    查看这个沙箱 https play golang org p elIHgHAZjT 声明从不同结构继承的结构时 type Base struct a string b string type Something struct Base c
  • 记录到 golang 中的文件

    我从 golang 开始 当我开始构建我的应用程序时 我想从一开始就添加日志记录 这就是我遇到问题的地方 如果我打开一个文件并使用标准日志记录库 我就可以写入文件 就像这样 package main import os fmt log fu
  • 如何列出已安装的 go 软件包

    据我所知go distribution带有某种package manager After go 1 4 1我已经运行的安装go help为了找到任何能够列出本地安装的子命令go packages 但不幸的是没有 那么该怎么做呢 goinst
  • Go 中带有 TTL 选项的映射

    我需要构建这样的数据结构 map string SomeType 但它必须将值存储大约 10 分钟 然后从内存中清除 第二个条件是记录数量 它必须是巨大的 该数据结构必须至少添加每秒 2 5K 条记录 那么 Go 中最正确的实现方法是什么
  • sync.WaitGroup 的示例正确吗?

    这个例子的用法是sync WaitGroup正确的 它给出了预期的结果 但我不确定wg Add 4 和位置wg Done 一次添加四个 goroutine 是否有意义wg Add http play golang org p ecvYHii
  • c.JSON gin.H{()} 输出空对象

    我刚刚开始学习 GO lang 结合 Gin 框架 我决定编写一些简单的 api 来获取有关酒精饮料的数据 我当前的问题是 api get 方法http localhost 8080 alcohol drinks 返回空数据对象 My co
  • Golang导入包错误

    go 5 2 在以下任一位置找不到包 github com googollee go socket io usr local go src github com googollee go socket io 来自 GOROOT Users
  • 如何在 OSX .pkg 中设置背景图像?

    我正在为我的 OSX 应用程序创建一个 pkg 安装程序 但我无法弄清楚如何设置背景图像 我在构建脚本中创建安装程序 如下所示 pkgbuild root APP FOLDER identifier com company product
  • 从私钥中提取公钥

    我尝试通过以下方式以编程方式完成步骤 2 1 openssl genrsa out signing pem 2048 2 openssl rsa in signing pem outform PEM pubout out signing p
  • 是否可以从 JS 显式调用导出的 Go WebAssembly 函数?

    是否可以调用 Go WebAssembly 函数 除了main 在 JavaScript 中 让我先展示一下我做了什么 我的Go函数定义如下 package main import fmt func main fmt Println it
  • Golang:获取切片的类型

    我正在使用 Reflect 包来获取任意数组的类型 但是得到 prog go 17 cannot use sample array1 type int as type interface in function argument proce
  • 接口实现中的非接口方法

    我有一个定义方法的接口 我有一个结构实施这个界面 在其中 我实现了该接口中的方法 并且还定义了其他方法 例如 package main import fmt type Animal interface MakeNoise type Dog
  • struct{} 和 struct{}{} 在 Go 中如何工作?

    我想知道 Go 中的 struct 和 struct 是什么意思 示例如下 array index struct or make map type struct struct is a keyword https golang org re
  • Golang中的匿名接口实现

    在Go中 有没有办法匿名满足接口 似乎没有 但这是我最好的尝试 In the 操场 http play golang org p 4i 8o087dg package main import fmt type Thing interface
  • 处理变量的范围:内部循环

    作为一名直接进入 Go 的 JS 开发者 如果长度超过commits不止一个 我没有太多时间来完成这件事 而且我搜索的时间比我希望的要长 关于如何重组它或让它发挥作用有什么想法吗 case github PushPayload push p
  • 从 C 调用带有字符串参数的 Go 函数?

    我可以从 C 调用一个没有参数的 Go 函数 按照下面的 https github com joeprivacy crefgo hello world 这通过编译go build和打印 Hello from Golang main func

随机推荐

  • 如何在 scikit-learn 中正确执行交叉验证?

    我正在尝试对 k nn 分类器进行交叉验证 但我对以下两种方法中哪一种正确执行交叉验证感到困惑 training scores defaultdict list validation f1 scores defaultdict list v
  • 使用带有附加类型参数的 Curiously Recurring Template Pattern (CRTP)

    我尝试使用 Curiously Recurring Template Pattern CRTP 并提供其他类型参数 template
  • 背景图像仅拉伸 y 轴,保留重复 x

    我有一个图像设置为 div 的背景图像 DIV 大小正在变化 其内部是渐变图像 CSS scroller shadow background image url img ui shadow png background repeat rep
  • 列出所有不带星号的本地 git 分支 [重复]

    这个问题在这里已经有答案了 如果我跑git branch 我得到类似的东西 master dev foo if I do git branch r 它将显示远程上的所有分支 不带星号 其中星号显示我当前签出的分支 如何列出所有本地分支机构而
  • 在 appsettings.json 日志记录上下文中,MinimumLevel 和 Override 意味着什么?

    我正在查看 appsettings jsonSerilog 示例项目 https github com serilog serilog docker blob master web sample src appsettings json 其
  • python - 是否可以创建“def”列表? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否可以创建一个 def 列表 连接 20 个按钮的列表 并为每个按钮设置不同的回调 Thanks def在Python中只是
  • 自定义类扩展 FloatingActionButton 时出错

    我创建了一个自定义类并扩展了FloatingActionButton public class customFAB extends FloatingActionButton public customFAB Context context
  • 在 Pytorch 中执行优化时如何对变量应用界限?

    我正在尝试使用 Pytorch 进行非凸优化 试图最大化我的目标 因此在 SGD 中最小化 我想限制因变量 x gt 0 并且 x 值的总和小于 1000 我认为我已经以斜坡惩罚的形式正确实施了惩罚 但我正在努力解决 x 变量的边界问题 在
  • 表单提交 keyCode == "enter" (13)

    I need to submit the content of a form when I press the Enter key but only if the form has no error message I built up t
  • 如何在react中进行fetch?

    下午好 我从服务器获取json 我处理它 但是对渲染的调用发生了2次 Google 在构造函数中创建一个空对象 如果该对象没有属性 则返回 undefined 但我也有数组 应用程序从中崩溃 我附上代码 如何将数据取出状态 是否可以在渲染中
  • NSJSON序列化

    我在使用某些公共 json 服务时遇到问题 以这种方式格式化的服务 jsonFlickrFeed title Uploads from everyone link http www flickr com photos description
  • Android 本地化 es-r419

    我正在本地化我的应用程序 支持的语言 区域之一是 Espanol 419 Android 不支持命名约定values es r419 但它接受values en rGB 我应该使用什么名称才能使其正常工作 我不知道r419从何而来 我唯一能
  • 让左栏一直向下延伸

    我已经为此绞尽脑汁近三天了 我读过很多关于 3col 拉伸 设置清晰和使用绝对位置和相对位置的文章 很多是矛盾的 我认为 我想要一个非常简单的布局 我想要左侧的导航 div 左侧有两个 div 和一个页脚 如果我使用表格 它会是这样的 ta
  • 如何在不打开 Flutter 上默认电子邮件应用程序的情况下发送邮件?

    是否可以在不打开默认电子邮件应用程序的情况下发送电子邮件 直接地 我用了两个插件 但两者都是打开默认应用程序 Using flutter email sender plugin final Email email Email body Ve
  • 为什么我不能将 PHP 类实例存储为 SESSION 变量

    我有一个 PHP 脚本 可以通过 Dojo Ajax xhrGet 调用以两种方式进行调用 第一次使用 init 参数调用它 这会导致脚本创建 StateList 类的实例并读入状态名称文件 session start include St
  • 使用 Sharp 库的 Firebase 部署功能在 Google Cloud Build 中失败

    从 Bitbucket Pipelines 迁移到 Google Cloud Build 后 Firebase 部署失败 该设置在 Bitbucket Pipelines 和本地都成功部署 除了下面的错误之外 没有给出进一步的解释 我对代码
  • 如何启用码头登录?

    我正在尝试调试我的情况 其中简单的 ActiveWeb 应用程序未在 Jetty 下运行 它的行为就像不存在任何用于请求处理的类一样 并返回错误 404 问题不在于 ActiveWeb 这是关于杰蒂的 如何发现 Jetty 有一些 Web
  • 谷歌浏览器扩展:如何多次打开新的浏览器窗口?

    我的 Chrome 扩展程序使用这个简单的 JS 打开一个新的浏览器窗口 chrome browserAction onClicked addListener function tab var room new Date getTime w
  • ViewPager 使用视图而不是片段

    I ve a ViewPager现在使用Views代替Fragments显示每个选项卡 每个选项卡都会扩展相同的布局文件 Overview In this ViewPager 我应该将地雷添加为选项卡 因此基本上每个选项卡都对应于一个特定的
  • 如何不使用gopath导入本地包

    我用过GOPATH但对于我当前面临的这个问题 它没有帮助 我希望能够创建特定于项目的包 myproject binary1 go binary2 go package1 go package2 go 我尝试了多种方法 但如何得到packag