Go 패키지 구조: `package.go` 파일이 필요한지, 내부 파일을 가져오는 방법, 파일 전체에 걸쳐 유형에 액세스할 수 있나요?

Barbara Streisand
풀어 주다: 2024-11-26 04:04:08
원래의
419명이 탐색했습니다.

Go Package Structure: Do We Need a `package.go` File, How to Import Internal Files, and Can We Access Types Across Files?

Go 언어 패키지 구조: 심층 설명

Go로 작업할 때 확립된 규칙을 준수하는 것이 중요합니다. 그러나 이러한 규칙을 효과적으로 구현하기 전에 이해하는 것이 가장 중요합니다. 이 글은 Go의 패키지 구조에 관해 자주 묻는 질문을 다룹니다.

질문

설정: 권장되는 프로젝트 구조에 따라 우리는 있음:

$GOPATH/
  src/
    github.com/
      username/
        projectname/
          main.go
          numbers/
            rational.go
            real.go
            complex.go
로그인 후 복사

main.go:

package main

import (
  "fmt"
  "./numbers"
)

func main() {
  fmt.Println(numbers.Real{2.0})
}
로그인 후 복사

질문:

  • 필요합니까? 각 패키지 폴더에 package.go 파일이 있나요?
  • 파일을 어떻게 가져오나요? number.go의 동일한 패키지 내에서?
  • real.go에서 Real과 같은 유형을 정의하고 main.go에서 fmt.Println(numbers.Real{2.0})으로 액세스할 수 있습니까?

답변

1. package.go 파일

모든 패키지 디렉터리에 package.go 파일이 필요하다는 가정은 잘못된 것입니다. Go에서는 단일 디렉터리 내의 파일이 자동으로 패키지로 그룹화됩니다. package.go 파일을 생성할 필요가 없습니다.

2. 패키지 내에서 파일 가져오기

Go는 파일 가져오기를 지원하지 않습니다. Rational.go, Real.go 및 complex.go와 같은 개별 파일이 아닌 패키지 번호를 직접 가져와야 합니다. 이 예에서는 ./ 접두사를 제거하고 import "github.com/username/projectname/numbers"를 사용합니다.

3. 공유 유형

Real과 같은 유형은 real.go와 같은 패키지 내의 파일에 정의되어야 합니다. 파일이 동일한 패키지에 속하므로 추가 import 문이 필요하지 않습니다. fmt.Println(numbers.Real{2.0})으로 main.go에서 Real 유형에 액세스하는 것이 정확합니다.

위 내용은 Go 패키지 구조: `package.go` 파일이 필요한지, 내부 파일을 가져오는 방법, 파일 전체에 걸쳐 유형에 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿