>백엔드 개발 >Golang >My Go 프로젝트를 빌드할 때 '패키지 XXX가 GOROOT에 없습니다'라는 메시지가 나타나는 이유는 무엇입니까?

My Go 프로젝트를 빌드할 때 '패키지 XXX가 GOROOT에 없습니다'라는 메시지가 나타나는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-17 09:47:25451검색

Why Do I Get

Go 프로젝트를 빌드할 때 "패키지 XXX가 GOROOT에 없습니다."

문제:
Go 프로젝트를 빌드하려고 할 때, "패키지 XXX가 GOROOT에 없습니다"라는 오류 메시지가 나타날 수 있습니다.

해결책:

Go의 최신 버전(1.13 이후)에서는 GOPATH, GOBIN 등과 같은 환경 변수가 더 이상 필요하지 않습니다. 대신:

  • 디렉터리를 Go 모듈로 지정하는 go.mod 파일이 프로젝트 루트에 있는지 확인하세요.
  • 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)
}

위 내용은 My Go 프로젝트를 빌드할 때 '패키지 XXX가 GOROOT에 없습니다'라는 메시지가 나타나는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.