> 백엔드 개발 > Golang > Go 언어의 패키지 가져오기 관련 몇 가지 문제

Go 언어의 패키지 가져오기 관련 몇 가지 문제

풀어 주다: 2019-12-14 16:40:07
앞으로
2185명이 탐색했습니다.

Go 언어의 패키지 가져오기 관련 몇 가지 문제

import

Go는 패키지를 기본 단위로 사용하여 소스 코드를 구성하며 모든 구문 가시성은 패키지 수준에서 정의됩니다. 동일한 패키지 아래에는 각 파일이 동일한 패키지 이름에 속하기만 하면 다양한 파일이 있을 수 있습니다.

각 소스 코드 파일의 첫 번째 줄에서는

package xxx
로그인 후 복사

구문을 통해 자신이 속한 패키지를 정의해야 합니다. 그런 다음 이 소스 코드 파일을 가져오는 데 사용되는 표준 패키지 또는 타사 패키지, 즉

import (
    "a/b/c"
    "fmt"
)
로그인 후 복사

입니다. 표준 라이브러리는 해당 디렉토리 아래의 GO 검색을 통해 설치되며, 타사 라이브러리는 개발자가 정의한 $GOPATH 아래에서 검색됩니다. 둘 다 발견되지 않으면 컴파일러는 오류를 보고합니다. 타사 패키지를 사용하는 경우 소스 코드와 .a가 모두 설치되면 컴파일러는 소스 코드에 연결됩니다. $GOPATH 下查找。当都找不到时,编译器就会报错。在使用第三方包的时候,当源码和 .a 均已安装的情况下,编译器链接的是源码。

注意: 上面语句中 a/b/c 最后的 c 为目录名,不是 package name。

在对文件中的方法进行调用时,使用如下格式:

package.Methodxxx()
로그인 후 복사

同一文件夹下的多个文件的 package 一般定义为该文件夹的名字,但是也有例外,比如上面的栗子中,c 文件下的所有文件的 package 定义为 fux,那么在调用这个文件夹下文件的方法时,只能使用 fux.Methodxxx(),而不是 c..Methodxxx()

一个非main包在编译后会生成一个.a文件(在临时目录下生成,除非使用go install安装到 $GOROOT$GOPATH下,否则你看不到 .a),用于后续可执行程序链接使用。

vendor

Go 在 1.5 的版本加入的 vendor 的支持来做包管理。1.5 版本要设置 GO15VENDOREXPERIMENT="1"

참고: 위 명령문에서 a/b/c의 마지막 c는 패키지 이름이 아니라 디렉터리 이름입니다.

파일에서 메소드를 호출할 때는 다음 형식을 사용하세요.

├── d
    ├── mypkg
    |     └── main.go
    └── vendor
          └── q
              ├── q.go
로그인 후 복사
동일 폴더에 있는 여러 파일의 패키지는 일반적으로 폴더 이름으로 정의되지만 예외가 있습니다. 예를 들어 위의 밤에는 c 파일 이 폴더에 있는 모든 파일의 패키지는 fux로 정의되며, 이 폴더에 있는 파일의 메서드를 호출할 때 c 대신 <code>fux.Methodxxx()만 사용할 수 있습니다. ..Methodxxx()메인 패키지가 아닌 패키지는 컴파일 후 .a 파일을 생성합니다($GOROOT 또는 $에 설치되지 않은 경우 임시 디렉터리에 생성됨). go install down을 사용하는 GOPATH, 그렇지 않으면 후속 실행 프로그램 연결에 사용되는 .a)가 표시되지 않습니다. 🎜🎜vendor🎜🎜Go는 버전 1.5에서 패키지 관리에 대한 공급업체 지원을 추가했습니다. 버전 1.5에서는 이 기능을 지원하려면 GO15VENDOREXPERIMENT="1"을 설정해야 하며, 버전 1.6에서는 이를 기본 매개변수 구성으로 사용합니다. 공급업체 디렉터리가 포함된 패키지 가져오기 경로에 대한 다음 규칙은 대략 다음과 같습니다. 🎜rrreee🎜위 디렉토리 구조를 main.go로 가져올 때 먼저 Vendor 디렉토리에서 검색하고, 찾을 수 없으면 $GOPATH 디렉토리에서 검색합니다. 컴파일러는 오류를 보고합니다. 🎜🎜더 많은 바둑 지식을 알고 싶다면 🎜go 언어 튜토리얼🎜 칼럼을 주목해주세요. 🎜

위 내용은 Go 언어의 패키지 가져오기 관련 몇 가지 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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