解决GOPATH在GOLAND中的坑

首先我的环境已配置好:

GO的目录结构是:

add.go

package calc
//函数名必须大写首字母,不然外部包找不到
func Add(a int,b int)(int){
 return a+b
}

sub.go

package calc
func Sub(a int,b int)(int){
 return a-b
}

执行文件,main.go

package main
import "fmt"
//导入包路径,这里src省略,默认加在GOPATH
import "go_dev/day1/package_example/calc"
func main(){
 sum := calc.Add(100,300)
 sub := calc.Sub(200,100)
 fmt.Println(sum,sub)
}

在cmd正确执行是:

这样是没问题的,GOPATH已经确定正确

但是GOLAND有个坑

在IDE中执行一直报错:

这里的GOPATH已经出错了,所以编译找不到,我检查了go env也是正确的GOPATH....

原来我忘记了GOLAND IDE中也有设置:

在这里修改为正确的GOPATH,再次执行:

没毛病了 :)

补充:golang的gopath和goroot

近期入门golang,第一个坑 gopath和goroot。在此做个记录用

我的环境:

golang 1.9.4

centos7.5 x64

安装略过。

大致介绍:

gopath:golang的工作目录和go get下载目录,项目目录。

goroot:golang的语言安装目录

GOPATH设置

go 命令依赖一个重要的环境变量:$GOPATH

(注:这个不是Go安装目录。下面以笔者的工作目录为示例,如果你想不一样请把GOPATH替换成你的工作目录。)

在类 Unix 环境下大概这样设置:

export GOPATH=/tmp/mygo

GOPATH允许多个目录,当有多个目录时,请注意分隔符,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下。

$GOPATH 目录约定有三个子目录:

GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,例如: $GOPATH/src/mymath 表示mymath这个应用包或者可执行应用,这个根据package是main还是其他来决定,main的话就是可执行应用,其他的话就是应用包,这个会在后续详细介绍package。

src 存放源代码(比如:.go .c .h .s等)

pkg 编译后生成的文件(比如:.a)

bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

我用是

这个开发在设置中

其中index entire GOPATH我一般去掉勾选,因为我习惯每个项目单独一个环境,不与其他项目公用

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 解决Goland 提示 Unresolved reference 错误的问题

    之前一直正常的项目,莫名其妙的 database/sql 包下的方法.结构体等等IDE都无法识别,出现一堆Unresolved reference错误提示,但包导入路径可以正确定位,而且项目运行也正常,其他包都正常,另一个项目下同样使用sql包也正常. 折腾半天都没用,不想重建项目重装IDE太麻烦,最后尝试最简单的升级到 golang 1.12.5 重启Goland后就正常了,应该和版本没有关系,重装下golang就行,估计是Goland文件索引的问题,重装golang后会重建索引就能正常识别了

  • win10下安装Go和Goland的详细教程

    go和golang之间有区别吗? go和golang之间没有区别,go就是golang,全名是golang,简称go语言. Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型.编译型语言.Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算. Go的语法接近C语言,但对于变量的声明有所不同.Go支持垃圾回收功能.Go的并行模型是以东尼·霍尔的

  • go语言入门环境搭建及GoLand安装教程详解

    Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型.编译型语言.Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算. Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

  • 解决GOPATH在GOLAND中的坑

    首先我的环境已配置好: GO的目录结构是: add.go package calc //函数名必须大写首字母,不然外部包找不到 func Add(a int,b int)(int){ return a+b } sub.go package calc func Sub(a int,b int)(int){ return a-b } 执行文件,main.go package main import "fmt" //导入包路径,这里src省略,默认加在GOPATH import "

  • goland中npm无法使用的问题及解决

    目录 goland中npm无法使用 npm ERR!无法安装任何包的解决 总结 goland中npm无法使用 明明已经成功安装且配置了环境到windows上,而且goland上的配置也丝毫无错,但是就是不能使用npm,让人苦恼,如果你也遇到了这样的问题,希望这篇文章可以帮到你. 出现的错误代码是这样的 PS C:\Users\Lenovo\GolandProjects\shop_client1> npm installnpm WARN logfile could not be created:

  • 解决Mac下使用python的坑

    操作系统:macOS High Sierra 10.13.3 Python3.6 因为此版本自带python2.7,就下载并安装了anaconda2的版本,结果使用的时候系统自带的python和anaconda里的python冲突,也就是装包的时候只在一处装了,另一处却不能使用.因此要配置环境变量,替代到系统自带的版本. python2.7总会发生中文字体乱码的情况,果断放弃,准备使用anaconda3. 1.安装anaconda3 在官网下载,并安装,直接都是下一步. 2.修改环境变量 在命令

  • python递归调用中的坑:打印有值, 返回却None

    今天给大家分享小编遇到的一个坑有关python递归调用中的坑:打印有值, 返回却None问题. 问题: 前几天写一个小面试题, 忽然有个惊悚的发现, 如下: s1 = 'abcdefg' def right_shift(s, n): """ 把传入的字符串,前n个字符移动到最后面 """ if n < 1: print(s) # 此步输出结果为 "efgabcd" return s s = s[1:] + s[0] n

  • 解决Mybatis在IDEA中找不到mapper映射文件的问题

    刚开始在IDEA中做用Mybatis查数据库中的数据时,报mapper映射文件找不到,害的我检查了好几次配置的路径是不是正确,但是看了好几遍都没有发现有拼写错误.(我记得以前在eclipse中这样写是没问题的) <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" &qu

  • 解决ant design vue中树形控件defaultExpandAll设置无效的问题

    页面步骤: 1.设置a-tree标签 2.默认的treeNodes值设置为空数组 3.在mounted组件加载的时候给treeNodes的值赋值 结果: 设置defaultExpandAll无效,并不能展开所有节点 原因: defaultExpandAll 仅在组件第一次渲染时有效,不仅仅tree组件,其它组件的defaultXXX值都是这个行为, 可以自行搜索受控组件/非受控组件的概念.如果你想异步获取数据后展开全部结点,可以使用非受控方式: https://codepen.io/lovefe

  • 浅谈Vue使用Cascader级联选择器数据回显中的坑

    业务场景 由于项目需求,需要对相关类目进行多选,类目数据量又特别大,业务逻辑是使用懒加载方式加载各级类目数据,编辑时回显用户选择的类目. 问题描述 使用Cascader级联选择器过程中主要存在的应用问题如下: 1.由于在未渲染节点数据的情况下编辑时无法找到对应的类目数据导致无法回显,如何自动全部加载已选择类目的相关节点数据: 2.提前加载数据后,点击相应父级节点出现数据重复等: 3.使用多个数据源相同的级联选择器,产生只能成功响应一个加载子级节点数据: 4.Vue中级联选择器相应数据完成加载,依

  • 解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法

    由于本博文的浏览量已经破万了,看了一下是自己很久以前写的了,刚开始写博客,感觉废话一大堆.为了不浪费大家的时间,这里就直接说怎么解决问题的吧. 其实就是我自己装了一个python-pip,至于是自己下的安装包安装的还是python2自带的我也忘了,然后后来应该是又装了一个python3,结果用pip install tensorflow 就出现了这个问题,总之就是因为执行这个命令的时候,pip没将tensorflow装在python3的目录里,然后用的时候调用的python3,所以导致找不到.所

  • 完美解决UI-Grid表格元素中多个空格显示为一个空格的问题

    UI-Grid中表格数据中如果存在多个连续的空格,会显示为一个空格,解决方法很简单,只需要加上这样一个样式: .ui-grid-cell-contents { white-space: pre !important; } white-space 属性设置如何处理元素内的空白. pre:  空白会被浏览器保留.其行为方式类似 HTML 中的 <pre> 标签. 以上这篇完美解决UI-Grid表格元素中多个空格显示为一个空格的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多

  • 解决jquery appaend元素中id绑定事件失效的问题

    1. 在jquery中append元素,如果该元素中有id值并且绑定事件,那么该id事件会失效,必须刷新一下才能使用. 2.解决办法: 举例:如果在一个<div class="title"></div>中,通过append添加一个id="demo"的按钮,常用的直接$("Selector").on("eventType",function(){})监听事件函数不起作用,例如该按钮的点击监听事件应该这样写

随机推荐