相关疑难解决方法(0)

Go install总是在GOPATH之外没有安装目录

~/src/go-statsd-client> echo $GOPATH
/Users/me/gopath
~/src/go-statsd-client> echo $GOROOT
/usr/local/Cellar/go/1.1.1\
~/src/go-statsd-client> go install
go install: no install location for directory /Users/me/src/go-statsd-client outside GOPATH
Run Code Online (Sandbox Code Playgroud)

无论项目采用何种结构,总是会失败并显示相同的消息.Go build非常有效.

这是我的 go env

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/me/gopath"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.1.1"
GOTOOLDIR="/usr/local/Cellar/go/1.1.1/pkg/tool/darwin_amd64"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
CGO_ENABLED="1"
Run Code Online (Sandbox Code Playgroud)

这是在Mac OSX Mountain Lion上,并且安装了自制软件.

macos go

138
推荐指数
5
解决办法
10万
查看次数

如何在主程序包中"运行"包含多个文件的项目?

我目前在我的主程序包中有一个名为的文件main.go.如何在main.go不创建单独的包的情况下将内容拆分为多个文件,因为代码不可重用.

我想要一个像这样的目录结构:

$ ls foo

main.go
bar.go
Run Code Online (Sandbox Code Playgroud)

bar.go

package main

import "fmt"

func Bar() {
    fmt.Println("Bar")
}
Run Code Online (Sandbox Code Playgroud)

然后进去 main.go

package main

func main() {
    Bar()
}
Run Code Online (Sandbox Code Playgroud)

但是go run main.go给了我:

# command-line-arguments
./main.go:4:2: undefined: Bar
Run Code Online (Sandbox Code Playgroud)

go

126
推荐指数
4
解决办法
7万
查看次数

如何导入本地包?

我是新手去处理我想要本地化的示例代码.

在原始的main.go进口声明中它是:

 import (
    "log"
    "net/http"
   "github.com/foo/bar/myapp/common"
    "github.com/foo/bar/myapp/routers"
)
Run Code Online (Sandbox Code Playgroud)

现在我已经commonrouters/home/me/go/src/myapp

所以我将import语句转换为:

import (
    "log"
    "net/http"
    "./common"
    "./routers"
)
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,go install myapp我得到了这些错误:

can't load package: /home/me/go/src/myapp/main.go:7:3: local import "./common" in non-local package
Run Code Online (Sandbox Code Playgroud)

此外,当我使用commonrouters替代./common./routers在import语句,我得到:

myapp/main.go:7:3: cannot find package "common" in any of:
    /usr/local/go/src/common (from $GOROOT)
    /home/me/go/src/common (from $GOPATH)
myapp/main.go:8:2: cannot find package "routers" in any of:
    /usr/local/go/src/routers (from $GOROOT)
    /home/me/go/src/routers (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

go

51
推荐指数
9
解决办法
6万
查看次数

Golang:通过命令行运行当前目录中的所有.go文件(多文件包)

我是Go的新人.我非常喜欢这种语言,但我很快意识到由于程序大小的增加,我需要开始分割文件.

go run main.go (main.go是我的main()函数的文件)

没有工作,我打了一段时间的障碍,因为我不知道如何使我的程序工作.

一些快速搜索引导我得到答案

go run main.go other.go ..

通过键入我所package main包含的所有文件,我可以运行编程.然而,每次这样做都非常麻烦和令人沮丧.

我写了以下自我回答的问题,以防止像我这样可能再次遇到这个障碍的人.

command-line-interface go

47
推荐指数
6
解决办法
5万
查看次数

golang模块和本地包

我试图了解如何使用go1.11模块来组织我的golang项目。我尝试了几种选择,但没有一个起作用。

我在主程序包和应用程序文件夹中有一些代码,以及主程序包使用的本地程序包。

$GOPATH
+ src
  + application/
    + main/
      + main.go
      + otherFileUnderMainPackage.go
    + aLocalPackage/
      + someCode.go
      + someCode_test.go
      + someMoreCode.go
      + someMoreCode_test.go
Run Code Online (Sandbox Code Playgroud)

主包中的文件import ../aLocalPackage。当我编译时,go build main/*.go它正在工作。

然后,我运行go mod init application:V.0.9.9并获得了go.mod文件,但是构建始终失败。我总是会因找不到本地软件包而出错:build application:V0.9.9/main: cannot find module for path _/.../src/application/aLocalPackage。我还尝试将本地程序包放在src /下,将其放在main /下,等等,但是这些方法都不适合我。

使用模块和本地包的方式是什么?

谢谢。

module go

5
推荐指数
1
解决办法
1707
查看次数

标签 统计

go ×5

command-line-interface ×1

macos ×1

module ×1