기능: 1. 패키지 이름은 일반적으로 소문자이며 짧고 의미 있는 이름을 사용합니다. 2. 패키지 이름은 일반적으로 해당 패키지가 있는 디렉터리와 이름이 동일하거나 다른 이름일 수 있습니다. 3. 패키지는 일반적으로 도메인 이름을 디렉터리 이름으로 사용하여 패키지 이름의 고유성을 보장합니다. 4. 소스 코드를 컴파일할 때 기본 패키지가 없는 경우 main이라는 패키지가 사용됩니다. 5. 한 디렉터리의 모든 소스 코드 파일은 동일한 패키지에만 속할 수 있으며 동일한 패키지에 속하는 소스 코드 파일은 여러 디렉터리에 배치될 수 없습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
Go 언어는 패키지를 사용하여 소스 코드를 구성합니다. 패키지는 여러 Go 소스 코드의 모음이며 고급 코드 재사용 솔루션입니다. Go 언어는 fmt, os, io 등과 같은 많은 내장 패키지를 제공합니다.
모든 소스 코드 파일은 특정 패키지에 속해야 하며, 소스 코드 파일에서 유효한 코드의 첫 번째 줄은 현재 속한 패키지를 선언하는 패키지 pacakgeName 문이어야 합니다.
패키지의 기본 개념
Go 언어 패키지는 디렉토리 트리의 구성 형식을 사용하지만 일반적으로 패키지 이름은 소스 파일이 있는 디렉토리 이름입니다. 패키지 이름이 해당 패키지가 있는 디렉터리와 동일해야 한다고 규정하지는 않습니다. 그러나 패키지 이름과 해당 디렉터리가 동일한 이름을 갖는 것이 좋습니다. 구조가 더 명확해졌습니다.
패키지는 매우 깊은 디렉터리에 정의될 수 있습니다. 패키지 이름 정의에는 디렉터리 경로가 포함되지 않지만 일반적으로 패키지를 참조할 때 전체 경로가 사용됩니다. 예를 들어 GOPATH/src/a/b/
아래에 패키지 c를 정의합니다. c 패키지의 소스 코드에서는 package a/b/c
대신 package c
로 선언하면 됩니다. 그러나 c 패키지를 가져올 때는 다음이 필요합니다. 예를 들어 import "a/b/c"
를 가져옵니다. GOPATH/src/a/b/
下定义一个包 c。在包 c 的源码中只需声明为package c
,而不是声明为package a/b/c
,但是在导入 c 包时,需要带上路径,例如import "a/b/c"
。
Go语言包特性
包名一般是小写的,使用一个简短且有意义的名称;
包名一般要和所在的目录同名,也可以与其目录不同名(但最好不要这样做),包名中不能包含- 等特殊符号。
包一般使用域名作为目录名称,这样能保证包名的唯一性,比如 GitHub 项目的包一般会放到GOPATH/src/github.com/userName/projectName
패키지 이름은 일반적으로 소문자이며 짧고 의미 있는 이름을 사용합니다.
패키지 이름 일반적으로 패키지 이름은 해당 패키지가 위치한 디렉터리와 동일해야 합니다. 그렇지 않으면 디렉터리와 다른 이름을 가질 수 있습니다(그러나 이렇게 하지 않는 것이 가장 좋습니다). 패키지 이름에는 -와 같은 특수 기호가 포함될 수 없습니다. 패키지는 일반적으로 도메인 이름을 디렉터리 이름으로 사용하여 패키지 이름의 고유성을 보장합니다. 예를 들어 GitHub 프로젝트의 패키지는 일반적으로 GOPATH/src/github.com/userName/에 배치됩니다. 프로젝트명
디렉토리.
main이라는 패키지는 애플리케이션의 엔트리 패키지입니다. 메인 패키지가 포함되지 않은 소스 코드 파일을 컴파일하면 실행 파일을 얻을 수 없습니다.
한 폴더의 모든 소스 코드 파일은 동일한 패키지에만 속할 수 있습니다. 동일한 패키지에 속하는 소스 코드 파일은 여러 폴더에 배치할 수 없습니다.
Go 언어 패키지 디자인 아이디어
패키지 시스템 디자인의 목적은 관련 기능 세트를 독립적인 단위에 넣어 이해와 업데이트를 용이하게 함으로써 대규모 프로그램의 디자인과 유지 관리를 단순화하는 것입니다. 단위는 프로그램의 다른 단위로부터 상대적인 독립성을 유지하면서 업데이트됩니다. 이 모듈식 기능을 사용하면 각 패키지를 다른 프로젝트에서 공유하고 재사용할 수 있으며, 프로젝트 내에서 또는 전역적으로 균일하게 배포하고 재사용할 수 있습니다.
각 패키지는 일반적으로 패키지 내의 각 식별자에 액세스하기 위해 서로 다른 네임스페이스를 정의합니다. 각 네임스페이스는 특정 패키지와 연결되어 있으며, 사용할 때 다른 부분과의 이름 충돌을 피하기 위해 유형, 함수 등에 대해 짧고 간결한 이름을 선택하겠습니다. 소스 파일을 수정하는 경우 소스 파일에 해당하는 패키지와 해당 패키지에 종속된 다른 모든 패키지를 다시 컴파일해야 합니다. 처음부터 빌드하더라도 Go 언어 컴파일러는 다른 컴파일된 언어보다 훨씬 빠르게 컴파일됩니다. Go 언어의 매우 빠른 컴파일 속도는 주로 세 가지 언어 기능에 기인합니다.
명시적 선언가져온 모든 패키지는 각 파일의 시작 부분에 명시적으로 선언되어야 합니다. 그래야 컴파일러가 패키지 종속성을 확인하기 위해 전체 소스 파일을 읽고 분석할 필요가 없습니다.
순환 종속성을 금지합니다.🎜🎜🎜패키지의 순환 종속성을 금지합니다. 순환 종속성이 없으므로 패키지의 종속성은 방향성 비순환 그래프를 형성하며 각 패키지는 독립적으로 컴파일될 수 있습니다. 🎜🎜🎜대상 파일🎜🎜🎜컴파일된 패키지의 대상 파일은 패키지 자체의 내보내기 정보를 기록할 뿐만 아니라 대상 파일에는 패키지의 종속성도 기록합니다. 따라서 패키지를 컴파일할 때 컴파일러는 모든 종속 파일을 순회하지 않고 직접 가져온 각 패키지의 개체 파일만 읽으면 됩니다. 🎜🎜【관련 추천: 🎜Go 비디오 튜토리얼🎜, 🎜프로그래밍 교육🎜】🎜위 내용은 golang 패키지의 특징은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!