>백엔드 개발 >Golang >모듈이 포함된 내부 패키지를 사용하여 Go 코드를 효과적으로 구성하는 방법은 무엇입니까?

모듈이 포함된 내부 패키지를 사용하여 Go 코드를 효과적으로 구성하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 14:12:24947검색

How to Effectively Organize Go Code Using Internal Packages with Modules?

내부 패키지 및 사용법 이해

질문:

"내부" 패키지를 사용하여 Go 코드를 효과적으로 구성하려면 어떻게 해야 하나요? ?

이니셜 문제:

프로젝트를 GOPATH 외부에 배치했음에도 불구하고 상대 경로(예: "./internal/foo|bar")를 사용하지 않는 한 main.go에서 내부 패키지 가져오기가 실패합니다.

모듈 소개:

Go에 모듈을 도입하면서 v1.11 이상에서는 프로젝트를 $GOPATH/src 안에 배치할 필요가 더 이상 필요하지 않습니다. 대신 go.mod 파일을 생성하여 각 모듈의 위치를 ​​지정해야 합니다.

예:

다음 프로젝트 구조를 고려하세요.

project/
  go.mod
  main.go

  internal/
    bar/
      bar.go
      go.mod
    foo/
      foo.go
      go.mod

go.mod 파일:

내부 패키지의 go.mod 파일은 간단합니다.

module bar

go 1.14
module foo

go 1.14

내부 패키지의 코드:

// bar.go
package bar

import "fmt"

// Bar prints "Hello from Bar"
func Bar() {
    fmt.Println("Hello from Bar")
}

// foo.go
package foo

import "fmt"

// Foo prints "Hello from Foo"
func Foo() {
    fmt.Println("Hello from Foo")
}

main.go:

// main.go
package main

import (
    "internal/bar"
    "internal/foo"
)

func main() {
    bar.Bar()
    foo.Foo()
}

go.mod 프로젝트 파일:

프로젝트 go.mod 파일은 Go에 내부 패키지와 해당 위치를 알려줍니다.

module project

go 1.14

require internal/bar v1.0.0
replace internal/bar => ./internal/bar
require internal/foo v1.0.0
replace internal/foo => ./internal/foo

중요 사항:

  • require 섹션의 이름은 Go 내부용이며 다음과 같이 사용할 수 있습니다. 임의적입니다.
  • 이 맥락에서 require 섹션의 버전 번호는 중요하지 않습니다.
  • 교체 줄은 Go가 내부 패키지를 찾을 수 있는 위치를 지정합니다.

실행:

이제 main.go 파일을 실행하면 print:

Hello from Bar
Hello from Foo

이 예는 모듈을 사용하여 Go 프로젝트 내에서 내부 패키지를 효과적으로 사용하는 방법을 보여줍니다.

위 내용은 모듈이 포함된 내부 패키지를 사용하여 Go 코드를 효과적으로 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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