go - 是否可以在 GOROOT 或 GOPATH 之外创建包?

我的目标是在桌面 /Users/username/Desktop/Learn/golang-package 上创建一个 Go 的项目文件夹并创建一个 math 包。

参考:https://www.golang-book.com/books/intro/11

问题是: go run main.go 抛出 main.go:4:2: package chapter-11/math is not in GOROOT (/usr/local/go/src/chapter11/math)

我做了什么:

  1. 运行 go env -w GO111MODULE=off 然后运行 go run main.go,它会抛出
    main.go:4:2: cannot find package "chapter11/math" in any of:
         /usr/local/go/src/chapter11/math (from $GOROOT)
         /Users/username/go/src/chapter11/math (from $GOPATH)
  2. ./math 文件夹中运行 go install,什么也没发生。
  3. ./math 文件夹复制到 /usr/local/go/src/chapter11/ 并运行 go run main.go 它可以工作,但我希望能够将它放在桌面上而不是 /usr/local/go 每次我需要创建时都需要输入密码新文件夹或更改文件夹名称。

文件夹概览

golang-package
|-main.go
|-chapter11
  |- math
     |- math.go

主。go

package main

import (
    "chapter11/math"
    "fmt"
)

func main() {
    xs := []float64{1, 2, 3, 4}
    avg := math.Average(xs)
    fmt.Println(avg)
}

数学。go

package math

func Average(xs []float64) float64 {
    total := float64(0)
    for _, x := range xs {
        total += x
    }
    return total / float64(len(xs))
}

回答1

结果是:

  1. 您可以在桌面上创建项目,例如 /Users/username/Desktop/Learn/learn-go
  2. go install 在项目文件夹中,例如 /Users/username/Desktop/Learn/learn-go 将在 /usr/local/go/bin 上创建一个文件。
  3. 如果您创建了一个包,例如 package math 并且您希望访问它,您需要运行例如 go mod init example.com/chapter11 然后您需要添加 import "example.com/chapter11/math"

相似文章

bash - 我还应该声明 GOPATH 吗?

我正在阅读学习GO并建议需要在PATHGOPATH="/home/user/go"上声明。这是来自作者:明确定义GOPATH并将$GOPATH/bin目录放在可执行文件路径中是个好主意。显式定义GOP...

随机推荐

最新文章