golang 的GOPATH设置的问题

go run footer.go 的时候呢, go会依次去GOPATH 和GOROOT设置的对应路径下面找对应的包(目录和文件)

找的时候呢, 会在GoPATH 和GOROOT对应的目录后面再加一层路径 "/src/"哦

---------------------------------------------------------------------------------------------

https://stackoverflow.com/questions/32110524/go-run-cannot-find-package


0down votefavorite

1

I have a sample project setup based on this article.

This is my directory structure:

goloang/
└── fooproject
    └── src
       ├── foo
       │   └── foo.go
       └── fooer
           └── fooer.go

I have set the GOTPATH

$ echo $GOPATH
/Users/Bharat/Dev/golang/fooproject

I am trying to run foor.go but I get a cannot find package error even though it exists in the location referenced by GOPATH i.e. in src/foo.

This is how I am running it:

$ pwd
/Users/Bharat/Dev/goloang/fooproject/src/fooer

$ go run fooer.go
fooer.go:4:3: cannot find package "foo" in any of:
    /usr/local/go/src/foo (from $GOROOT)
    /Users/Bharat/Dev/golang/fooproject/src/foo (from $GOPATH)

These are the file contents.

src/foo/foo.go:

package foo

import (
  "fmt"
)

func Bar() {
  fmt.Println("bar")
}

src/fooer/fooer.go:

package main

import (
  "foo"
)

func main() {
  foo.Bar()
}

I get the same error when I try to do go build fooer.go.

Where am I going wrong with the project structure?

-------------------------------------------------------------------------


3down voteaccepted

That might be because of a typo:

goloang
instead of
golang

You have:

$ echo $GOPATH
/Users/Bharat/Dev/golang/fooproject
                  ^^^^^^
$ pwd
/Users/Bharat/Dev/goloang/fooproject/src/fooer
                  ^^^^^^^

shareedit

answered Aug 20 ‘15 at 6:00

VonC

696k22521002319

 

    

goloang doesn‘t look like the correct spelling. – VonC Aug 20 ‘15 at 6:04
    

Aah!! My eyes seem bad. It was really a stupid mistake. Another pair of eyes looking at it was helpful! It works now. – Bharat Aug 20 ‘15 at 6:06
    

@Bharat 11PM in SF... I understand ;) I‘ve been there many times. – VonC Aug 20 ‘15 at 6:07 

时间: 2024-10-08 17:05:17

golang 的GOPATH设置的问题的相关文章

golang,liteide设置 windows7(64)

1.安转go的环境,exe安装包 2.下载liteide27.2.1 3.打开liteide开始开发,在里面添加gopath,无法读取windows里面的gopath设置,不知道什么原因,以管理员运行也没有效果 发现不使用网络的库是没有问题的 但是一旦使用github.com上面的库文件就出现无法下载 4.安装git 5.cmd go env 发现gopath为空 set gopath=XXX 6.发现找不到git,设置了windows的path也没有用,不知道为什么 直接cmd set pat

golang开发环境设置

1.安装golang,go1.9.2.linux-amd64.tar.gz压缩包拷贝到/usr/local,解压即可 2.设置环境变量export GOROOT=/usr/local/goexport PATH=$PATH:/usr/local/go/bin#export PATH=$PATH:$GOROOT/bin 3.下载,编译用户工程mkdir ~/gopath export GOPATH=$HOME/gopath go get github.com/gwuhaolin/livegogo

windows下gopath设置

下载了go语言的安装包, 然后安装, 装完了需要设置三个地方: 1. 在windows的PATH变量中添加go的可执行文件所在的目录: [javascript] view plaincopy PATH=C:\Go\bin;其他设置; 2. 设置 GOROOT , 这个好理解, 直接设置成 C:\Go 即可 [javascript] view plaincopy GOROOT=C:\Go 3. 设置GOPATH, 这个很难理解, 我的尝试: [python] view plaincopy GOPA

gopath 设置问题

实际上GOPATH, 可以是一个目录的列表, 在windows环境变量里设置的时候, 多个目录使用分号(;)隔开, 在linux里多个目录使用冒号(:)隔开, 组合的一个字符串. GOPATH是一些列用于go来查找包的目录列表. 使用import "包名" 的时候, 如果在 GOROOT里找不到, 应该会转向到你的GOPATH里去寻找. 不让GOPATH和GOROOT环境变量的值设置为同一个目录, 可能是因为不想你新安装的包, 污染了核心go的pkg和src文件.

go项目工程目录组织和GOPATH设置

Golang没有工程文件的概念,是通过目录结构来体现工程的结构关系的. 刚开始写go程序的时候只有一个主程序文件(如main.go),也就没太在意go项目工程组织的重要性.最近着手看看网上的开源项目,感觉自己的go项目工程目录组织的太烂了,所以特意重新整理了一下. 按照go官方文档需要把项目根目录地址加到环境变量GOPATH里去,然而,在学习和工作中开发的程序中有多个项目,如果把每个项目的路径都加载到环境变量GOPATH里,那么不过多久环境变量GOPATH里的字符串想必就会超出微软定义环境变量的

go语言学习——工程组织和GOPATH设置

go没有工程文件的概念,是通过目录结构来体现工程的结构关系.因此,在习惯了VC的那种工程文件组织形式的情况下,刚开始接触go有点不适应,一下子没有理解环境变量GOPATH的意义. 最开始看go的教程时,学写代码时,只在GOPATH里设置了一个目录.该目录下有src.bin.pkg三个目录,不同应用的代码都放在src中,显得比较凌乱.如下图,GOPATH是gopro目录,src下放了各种互不相关的应用的代码. 这还只是学习代码,可想而知,一旦是个真正的项目,代码必然要复杂的多,这样的组织形式相当不

golang网络通信超时设置

网络通信中,为了防止长时间无响应的情况,经常会用到网络连接超时.读写超时的设置. 本文结合例子简介golang的连接超时和读写超时设置. 1.超时设置 1.1 连接超时 func DialTimeout(network, address string, timeout time.Duration) (Conn, error) 第三个参数timeout可以用来设置连接超时设置. 如果超过timeout的指定的时间,连接没有完成,会返回超时错误. 1.2 读写超时 在Conn定义中,包括读写的超时时

golang (mac)

golang osx $ brew install go $ go version // 查看go版本 go version go1.6.2 darwin/amd64 $ go env // 查看go环境 创建一个测试文件 hello.go,内容: package main import "fmt" // main func main() { fmt.Println("Hello World!") } $ go run hello.go Hello World! $

Centos 安装golang beego

刚开始用go和beego,真的还好多不懂~希望对看到的朋友有帮助~ 本人环境:centos 6.3x86_64 1.我在机器上创建了一个用户zww(useradd zww),登录zww(su zww) 2.下载golang: https://golang.org/dl/ 根据我的系统类型,选择下载:go1.4.2.linux-amd64.tar.gz 3.解压(我就直接解压在了~/ 目录): tar zxvf go1.4.2.linux-amd64.tar.gz 4.设置环境变量: vi ~/.