golang下的GOPATH路径问题及解决
更新时间:2024年01月19日 16:21:37 作者:骑风追马
为了方便,我一般使用task来管理项目的编译等事项,由于才入门go,所以碰到一个问题,以此篇为记,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
背景
我需要开发一个组建,所以代码结构没有src目录,并且项目放在GOPATH路径的src目录下
我在编译二进制文件的时候使用了下面的命令
GOPATH=`pwd` GOBIN=`pwd` go install main.go
编译报错,提示import的类库找不到
排错分析
- 检查env是否正确 命令:
go env,检查结果正常 - 检查golang的GOPATH和GOROOT配置是否正常,检查通过
- 分析编译命令找到问题
问题
我在编译的时候重新定义了GOPATH路径。
在go语言编译的时候,它会去找GOPATH和GOROOT下面的src目录。
现在GOROOT=~/gopath/,那么首先编译器到GOROOT下找import的包,如果没有找到,则到GOPATH路径下寻找
此时GOPATH=`pwd`,也就是项目路径,那么它会到项目路径下的src目录下寻找。
由于我没有src目录,所以找不到,从而编译报错
解决
问题其实出在GOPATH下,由于当前项目文件已经处于GOPATH的src下,所以只需要删除GOPATH即可。
正确编译命令:
GOBIN=`pwd` go install main.go
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Go语言时间管理利器之深入解析time模块的实战技巧
本文深入解析了Go语言标准库中的time模块,揭示了其高效用法和实用技巧,通过学习time模块的三大核心类型(Time、Duration、Timer/Ticker)以及高频使用场景,开发者可以更好地处理时间相关的任务,感兴趣的朋友一起看看吧
2025-03-03
Go中跨语言实现传输的方法步骤
gRPC是Google开源的高性能RPC框架,基于HTTP/2协议和ProtocolBuffers序列化,支持多语言、流式传输和企业级特性,文章详细介绍了gRPC的接口定义语言、服务定义、消息类型、RPC类型以及服务端和客户端的实现方式,需要的朋友可以参考下
2026-04-04
GO语言原生实现文件上传功能
这篇文章主要为大家详细介绍了GO语言原生实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-07-07
Go语言排序算法之插入排序与生成随机数详解
从这篇文章开始将带领大家学习Go语言的经典排序算法,比如插入排序、选择排序、冒泡排序、希尔排序、归并排序、堆排序和快排,二分搜索,外部排序和MapReduce等,本文将先详细介绍插入排序,并给大家分享了go语言生成随机数的方法,下面来一起看看吧。
2017-11-11
Golang流程控制语句的具体使用
在编写程序时,流程控制是必不可少的一部分,本文主要介绍了Golang流程控制语句的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2024-05-05
golang使用接口进行灵活缓存
缓存是编程中一种常见的技术,通过存储昂贵的计算或 IO 结果来快速查找,从而提高性能,本文将介绍一下Go的接口如何帮助构建灵活、可扩展的缓存,感兴趣的可以了解下
2023-09-09
golang中使用sync.Map的方法
这篇文章主要介绍了golang中使用sync.Map的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2020-06-06
Go1.21新增cmp包的用法详解
Go 1.21新增的 cmp 包提供了与比较有序值相关的类型和函数,前几篇文章讲解的 slices 包中的函数有大量使用到 cmp 包中的函数和类型,下面我们就来看看cmp包的相关函数用法吧
2023-08-08
Go语言Gin框架前后端分离项目开发实例
本文主要介绍了Go语言Gin框架前后端分离项目开发工程化实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-11-11
一篇文章读懂Golang init函数执行顺序
init()函数会在包被初始化后自动执行,并且在main()函数之前执行,但是需要注意的是init()以及main()函数都是无法被显式调用的,下面这篇文章主要给大家介绍了关于如何通过一篇文章读懂Golang init函数执行顺序的相关资料,需要的朋友可以参考下
2022-11-11
最新评论