>백엔드 개발 >Golang >Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까?

Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까?

青灯夜游
青灯夜游원래의
2023-01-05 10:16:303908검색

이유: 프로그램의 모든 코드를 하나의 소스코드 파일에 담는 것은 무리입니다. 관련 코드는 별도의 파일로 관리해야 합니다. 다만, 프로그램 파일이 많아질수록 정리하는 방법/형태가 있어야 합니다. 파일을 관리하므로 Go에서는 "패키지"라는 개념을 도입합니다. 패키지는 프로그램 기능/속성의 "분산형 관리" 및 "통합 사용"을 위한 논리적인 조직 형태입니다.

Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

패키지 소개

go 언어를 사용하여 개발한 프로그램 파일을 소스 코드 파일이라고 합니다(소스 코드 파일은 .go로 끝나야 함). 당연히 프로그램의 모든 코드를 하나의 소스코드 파일에 넣는 것은 무리이며, 관련 코드를 별도의 파일로 관리해야 합니다. 파일이므로 Go가 도입되었습니다. "패키지"의 개념을 이해합니다.

Package는 Go 언어에서 제공하는 가상 개념입니다. 일관된 패키지 선언이 있는 여러 소스 코드 파일은 논리적으로 함께 구성되며 동일한 패키지에 속합니다.

Go 언어 패키지는 디렉토리 트리의 조직적 형태에 의존합니다. 일반적으로 패키지 이름은 소스 파일이 있는 디렉토리의 이름입니다. 하지만 Go 언어에서는 패키지 이름에 패키지 이름이 디렉터리 이름과 동일하더라도 구조를 더 명확하게 하기 위해 디렉터리 이름이 동일해야 합니다.

패키지는 매우 깊은 디렉터리에 정의될 수 있습니다. 패키지 이름 정의에는 디렉터리 경로가 포함되지 않지만 일반적으로 패키지를 참조할 때 전체 경로가 사용됩니다. 예를 들어 GOPATH/src/a/b/ 아래에 패키지 c를 정의합니다. 패키지 c의 소스 코드에서는 패키지 a/b/c 대신 패키지 c로만 선언하면 됩니다. 그러나 패키지 c를 가져올 때는 import "a/b/c"와 같은 경로를 가져와야 합니다. .

패키지 관용어 사용:

  • 패키지 이름은 일반적으로 소문자이며 짧고 의미 있는 이름을 사용합니다.

  • 패키지 이름은 일반적으로 해당 패키지가 위치한 디렉터리와 동일하거나 다를 수 있습니다. 패키지 이름에는 -와 같은 특수 기호가 포함될 수 없습니다.

  • 패키지는 일반적으로 도메인 이름을 디렉터리 이름으로 사용하여 패키지 이름의 고유성을 보장합니다. 예를 들어 GitHub 프로젝트의 패키지는 일반적으로 GOPATH/src/github.com/userName/projectName 디렉터리에 배치됩니다.

  • main이라는 패키지는 애플리케이션의 엔트리 패키지입니다. 메인 패키지가 포함되지 않은 소스 코드 파일을 컴파일하면 실행 파일을 얻을 수 없습니다.

  • 한 폴더의 모든 소스 코드 파일은 동일한 패키지에만 속할 수 있습니다. 동일한 패키지에 속하는 소스 코드 파일은 여러 폴더에 배치할 수 없습니다.

(1) 패키지 선언, 패키지 가져오기 경로, 주의할 사항

//一:包的声明
// 1、每个源码文件都必须在文件头处声明自己归属的包。
package 包名 // 包名一般总是用小写字母

// 2、包名任意,包名一致的属于同一个包

// 3、包是编译和归档Go程序的最基本单位,一个包中的多个源码文件是一个不可分割的整体

//二:包的导入路径
强调强调强调!!!!!!
包是一个把多个源码文件归一到一起管理的虚拟单位,一定要记住,它只是一个虚拟的概念而已,而实实在在地讲,多个源码文件是要放置到一个实实在在的文件夹下的,这个实实在在的文件夹所处的路径是包的导入路径。包的导入路径很重要,他是包的"家庭住址",是用来找到包的(用在import语句中,稍后介绍),但它绝不等同于包的概念

//三:注意的问题
1、一个文件夹下只能放置一个包,也就是所一个文件夹下放置的多个源码文件的包声明必须一致,go以此来确保一个路径就唯一定位到唯一的一个包。
2、包虽然与文件夹路径是截然不同的意思,但是为了方便记忆,包通常应该声明为文件夹的名字
例如文件夹路径/a/b/c/mypkg,包名应声明为package mypkg,mypkg就为包名

Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까?

(2) 패키지 구별 및 배치

패키지는 가상적이고 논리적인 개념입니다. 패키지로 정리된 여러 소스 코드 파일은 실제로 실제이며 특정 폴더에 배치되어야 합니다.

참고: 후속 작성의 단순화를 위해 저자가 패키지로 정리된 여러 소스 코드 파일을 직접 저장합니다. 위치는 다음과 같습니다. 단순히 패키지가 저장된 위치라고 하므로 독자는 이 위치를 알고 있어야 합니다.

메인 패키지에는 프로그램의 진입점이 포함되어 있으며 주로 이를 실행하는 데 사용됩니다. 어떤 경우에도 메인 패키지는 어떤 폴더에나 배치할 수 있습니다.

저자는 기본 패키지 이외의 패키지를 다른 패키지라고 부르는데, 특히 내장 패키지, 사용자 정의 패키지, 다운로드한 타사 패키지를 지칭합니다. 메인 패키지와 다르게 다른 패키지는 주로 import해서 사용합니다. 배치 위치는

// 内置包
内置包固定被放置在`$GOROOT/src/`下,与任何模式无关

// 自定义包
在未启用modules模式的情况下,自定义包需要放置在GOPATH指定的任意目录下的src中

// 下载的第三方包
在未启用modules模式的情况下,使用go工具链命令下载的第三方包总是默认被存放到GOPATH的第一个目录的src下 


// 强调一下
在早期的Go环境中,自定义的包与下载的第三方包都是放到了$GOPATH/src下,因为早期Go采用的是和GOPATH模式,而且即便是在GO1.14.2版本中,在我们还未学习如何使用任何新模式前,默认使用的仍是GOPATH模式

ps입니다.

1. 내장 패키지는 표준 패키지에 대한 작성자의 별명입니다. GOPATH 작업 공간에 저장되어 있는 한 패키지는 공식적으로 작업 공간 패키지라고 합니다


(3) 패키지 사용

// 1、一个源码文件中声明的函数、类型、变量和常量等标识符/名字对同一包中的所有其他源码文件都可见,不需要加任何前缀即可引用,因为代码包只是一种组织管理源码文件的形式,同一个包下的多个源码文件本就属于一个整体,事实上我们完全可以将一个包当成一个”大文件“去看,毫无疑问这个”大文件“中声明的标识符/名字不能重名

// 2、包名很关键
名为main的包可简称为”main包“,是程序的入口,go程序运行时会查找main包下的main函数,main函数既没有参数声明也没有结果声明,见下图

名不为main的包可称之为”其他包“,是程序的功能/属性集合,此类包用来被其他包导入使用,为何此时包名仍然很关键呢?因为我们导入时用的是导入路径(指的是包所在的路径,该路径不是绝对路径,稍后介绍),但是使用的则可能会使用"包名.xxx"

Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까? 요약하자면 패키지는 "분산 관리" 및 "통합 사용"의 논리적 의미입니다. 프로그램 기능/속성

의 조직 형태【관련 추천:

Go 비디오 튜토리얼

, 프로그래밍 교육

위 내용은 Go 언어가 코드를 패키지로 구성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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