脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - 聊聊Go语言编译github上的项目遇到的坑

聊聊Go语言编译github上的项目遇到的坑

2021-06-10 01:05老油条666 Golang

这篇文章主要介绍了解决Go语言编译github上的项目遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

最近转行Go语言服务端,老大写了个很复杂的框架,并且没有文档。在读取源代码的时候,很是痛苦,记忆力不咋地,记不住东西,于是乎想出了通过源代码创建UML类图的办法。C++和JAVA都有类似的工具软件,但是Go语言只有通过github上的一个开源项目来搞。

中间遇到了很多坑,于是乎记下这篇文章。

首先根据网上的文章,搞这个项目的第一步是go get **********(项目路径),但是第一步就没迈出去,各种报错

下面就是错误列表:

?
1
2
3
4
5
6
7
package git.oschina.net/jscode/go-package-plantuml: unrecognized import path "git.oschina.net/jscode/go-package-plantuml" (parse https://git.oschina.net/jscode/go-package-plantuml?go-get=1: no go-import meta tags (meta tag gitee.com/jscode/go-package-plantuml did not match import path git.oschina.net/jscode/
go-package-plantuml))
 
package gitee.com/jscode/go-package-plantuml.git: cannot download, git://gitee.com/jscode/go-package-plantuml uses insecure protocol
 
package https:/gitee.com/jscode/go-package-plantuml.git: https:/gitee.com/jscode/go-package-plantuml.git: invalid import path: malformed import path "https:/gitee.com/jscode/go-package-plantuml.git": invalid char ':
go: missing Git command. See https://golang.org/s/gogetcmd

然后上网差各种资料,仍然解决不了。

后来看了一篇博客,这位大佬用的是git clone(其实之前我也想过用git clone,但卡在了后续编译错误上,让我以为是go get获取的项目做了特殊处理),这位大佬说:其实go get 和git clone其实干的事儿都差不多,g前者唯一做的特殊处理是存放路径不同罢了。

至于是什么路径我也不是很清楚。好吧,大佬给我喂了这ke定心丸,我把项目git clone下来了,然后又卡死在了编译上。

下面是我遇到的错误之一:

聊聊Go语言编译github上的项目遇到的坑

好多其他的错我让我给清屏干掉了,就留下了这么一个。其实我的大部分错误都是Go语言那三个环境变量没整对。GOPATH、GOROOT和PATH环境变量的问题。

GOPATH可以认为是项目的存放路径(即工作路径),不知道我这么理解正不正确,若不正确,哪位懂得请指出我的错误,但是这么理解好像项目是能正常工作的

GOROOT就是Go语言的安装目录,只能设为 *:/Go ,* 表示的是盘符。但是手贱不知道怎么改成了Go/bin,结果在编译时候命令行提示找不到项目,然后出错路径很奇葩,里面有两个bin,即路径变成了**/bin/bin/***,这能找到才怪了。

Path这个是系统环境变量,需要在GOROOT的基础上加上/bin。

然后变异的时候还是报错,说项目在指定路径下找不到需要的包或者文件,其实这个还是涉及到路径的问题。

我的解决办法是把那些找不到路径的包全给拷到 */Go/src/目录下,然后去修改报错的代码行处,但是即使是这样有些文件还是找不到,我又想出了修改import的路径,直接改成相对路径。

这样我的这个项目总算是编译成功了。相对路径可能有的代码不好使,老大说建议都放到工作路径下的src目录下或者是Go的安装目录下的src文件夹中。

更正:注意别使用相对路径,否则编译成功后的exe在执行期间会出幺蛾子

后来我发现我加目录就是多次一举,原项目之所以编译时报错是因为我压根儿就没有配置项目路径(没有讲项目路径加到GoPath中),配置好项目的GoPath路径之后,直接编译就能成功。

而且,如果不配置项目路径到GoPath,仅仅只是像我第一种方法那样解决了编译错误,运行时也会报错(这真是个悲伤的故事,我已经开始在Goland里面手动画UML类图了),生成不了UML文件,命令行提示生成成功,但是路径下就是找不到生成文件,因为实际上就是没有生成,路径没配置对

补充:Go语言 使用Golang导入github的项目的时候出现Cannot resolve directory 'github.com'

在学习go语言过程中从github下载了几个项目,但是使用golang通篇报红,GOPATH反复检查没有设置错,各种方法都找遍了,最终解决了记录一下。

聊聊Go语言编译github上的项目遇到的坑

解决办法

在golang的设置里面将图中这个勾去掉 聊聊Go语言编译github上的项目遇到的坑

原因

原因是Goland 编辑器中项目设置为 go modules 项目,导致从gomod读取,从而报错,去掉勾,问题完美解决。

原文链接:https://blog.csdn.net/qq_15054345/article/details/90800072

延伸 · 阅读

精彩推荐
  • Golanggolang json.Marshal 特殊html字符被转义的解决方法

    golang json.Marshal 特殊html字符被转义的解决方法

    今天小编就为大家分享一篇golang json.Marshal 特殊html字符被转义的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    李浩的life12792020-05-27
  • Golanggolang如何使用struct的tag属性的详细介绍

    golang如何使用struct的tag属性的详细介绍

    这篇文章主要介绍了golang如何使用struct的tag属性的详细介绍,从例子说起,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看...

    Go语言中文网11352020-05-21
  • Golanggolang 通过ssh代理连接mysql的操作

    golang 通过ssh代理连接mysql的操作

    这篇文章主要介绍了golang 通过ssh代理连接mysql的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    a165861639710342021-03-08
  • GolangGolang中Bit数组的实现方式

    Golang中Bit数组的实现方式

    这篇文章主要介绍了Golang中Bit数组的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    天易独尊11682021-06-09
  • GolangGolang通脉之数据类型详情

    Golang通脉之数据类型详情

    这篇文章主要介绍了Golang通脉之数据类型,在编程语言中标识符就是定义的具有某种意义的词,比如变量名、常量名、函数名等等,Go语言中标识符允许由...

    4272021-11-24
  • Golanggo语言制作端口扫描器

    go语言制作端口扫描器

    本文给大家分享的是使用go语言编写的TCP端口扫描器,可以选择IP范围,扫描的端口,以及多线程,有需要的小伙伴可以参考下。 ...

    脚本之家3642020-04-25
  • Golanggo日志系统logrus显示文件和行号的操作

    go日志系统logrus显示文件和行号的操作

    这篇文章主要介绍了go日志系统logrus显示文件和行号的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang的httpserver优雅重启方法详解

    golang的httpserver优雅重启方法详解

    这篇文章主要给大家介绍了关于golang的httpserver优雅重启的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    helight2992020-05-14