首页 > 后端开发 > Golang > 为什么我在构建 Go 项目时收到'package XXX is not in GOROOT”?

为什么我在构建 Go 项目时收到'package XXX is not in GOROOT”?

Mary-Kate Olsen
发布: 2024-12-17 09:47:25
原创
459 人浏览过

Why Do I Get

构建 Go 项目时“Package XXX is Not in GOROOT”

问题:
尝试构建 Go 项目时,错误消息“package XXX is not in GOROOT”可能

解决方案:

在较新版本的 Go(1.13 后)中,不再需要 GOPATH、GOBIN 等环境变量。相反:

  • 确保项目根目录下存在 go.mod 文件,该文件将该目录指定为 Go 模块。
  • 使用 go mod init remote-repo.com 初始化模块。 /username/repository.
  • 运行命令时指定完整的包路径,例如 go COMMAND package_path/xxx。这可以防止编译器假设包位于 GOROOT 中。
  • Go 使用项目工作空间或当前工作目录来存储不属于 Go SDK 的包。
  • 要安装可执行二进制文件,使用 go install。
  • 要在当前目录中编译可执行文件,请使用 go build.

工作流程:

  1. 使用 go mod init 在项目根目录初始化 Go 模块。
  2. 使用以下命令运行测试go test -v ./... (递归地)或 go test -v ./xxx (对于特定的package)。
  3. 使用 go run ./...(递归)或 go run ./xxx(对于特定包)编译并执行包。

版本代码示例1:

add.go:

package main

func addition(x int, y int) int {
    return x + y
}
登录后复制

add_ test.go:

package main

import "testing"

func TestAdd(t *testing.T) {

    t.Run("adding two positive numbers", func(t *testing.T) {
        sum := addition(2, 2)
        expected := 4

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

    t.Run("adding two negative numbers", func(t *testing.T) {
        sum := addition(-3, -4)
        expected := -7

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

    t.Run("adding one positive and one negative integer", func(t *testing.T) {
        sum := addition(1, -3)
        expected := -2

        if sum != expected {
            t.Errorf("Expected %d; but got %d", expected, sum)
        }
    })

}
登录后复制

main.go:

package main

import "fmt"

func main() {
    var num1 int = 1
    var num2 int = 2

    sum := addition(num1, num2)
    product := multiplication(num1, num2)

    fmt.Printf("The sum of %d and %d is %d\n", num1, num2, sum)
    fmt.Printf("The multiplication of %d and %d is %d\n", num1, num2, product)
}
登录后复制

以上是为什么我在构建 Go 项目时收到'package XXX is not in GOROOT”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板