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

이유: 프로그램의 모든 코드를 하나의 소스코드 파일에 담는 것은 무리입니다. 관련 코드는 별도의 파일로 관리해야 합니다. 다만, 프로그램 파일이 많아질수록 정리하는 방법/형태가 있어야 합니다. 파일을 관리하므로 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으로 문의하세요.
Golang의 영향 : 속도, 효율성 및 단순성Golang의 영향 : 속도, 효율성 및 단순성Apr 14, 2025 am 12:11 AM

goimpactsdevelopmentpositively throughlyspeed, 효율성 및 단순성.

C와 Golang : 성능이 중요 할 때C와 Golang : 성능이 중요 할 때Apr 13, 2025 am 12:11 AM

C는 하드웨어 리소스 및 고성능 최적화가 직접 제어되는 시나리오에 더 적합하지만 Golang은 빠른 개발 및 높은 동시성 처리가 필요한 시나리오에 더 적합합니다. 1.C의 장점은 게임 개발과 같은 고성능 요구에 적합한 하드웨어 특성 및 높은 최적화 기능에 가깝습니다. 2. Golang의 장점은 간결한 구문 및 자연 동시성 지원에 있으며, 이는 동시성 서비스 개발에 적합합니다.

Golang in Action : 실제 예제 및 응용 프로그램Golang in Action : 실제 예제 및 응용 프로그램Apr 12, 2025 am 12:11 AM

Golang은 실제 응용 분야에서 탁월하며 단순성, 효율성 및 동시성으로 유명합니다. 1) 동시 프로그래밍은 Goroutines 및 채널을 통해 구현됩니다. 2) Flexible Code는 인터페이스 및 다형성을 사용하여 작성됩니다. 3) NET/HTTP 패키지로 네트워크 프로그래밍 단순화, 4) 효율적인 동시 크롤러 구축, 5) 도구 및 모범 사례를 통해 디버깅 및 최적화.

Golang : Go 프로그래밍 언어가 설명되었습니다Golang : Go 프로그래밍 언어가 설명되었습니다Apr 10, 2025 am 11:18 AM

GO의 핵심 기능에는 쓰레기 수집, 정적 연결 및 동시성 지원이 포함됩니다. 1. Go Language의 동시성 모델은 고루틴 및 채널을 통한 효율적인 동시 프로그래밍을 실현합니다. 2. 인터페이스 및 다형성은 인터페이스 방법을 통해 구현되므로 서로 다른 유형을 통일 된 방식으로 처리 할 수 ​​있습니다. 3. 기본 사용법은 기능 정의 및 호출의 효율성을 보여줍니다. 4. 고급 사용에서 슬라이스는 동적 크기 조정의 강력한 기능을 제공합니다. 5. 레이스 조건과 같은 일반적인 오류는 Getest-race를 통해 감지 및 해결할 수 있습니다. 6. 성능 최적화는 sync.pool을 통해 개체를 재사용하여 쓰레기 수집 압력을 줄입니다.

Golang의 목적 : 효율적이고 확장 가능한 시스템 구축Golang의 목적 : 효율적이고 확장 가능한 시스템 구축Apr 09, 2025 pm 05:17 PM

Go Language는 효율적이고 확장 가능한 시스템을 구축하는 데 잘 작동합니다. 장점은 다음과 같습니다. 1. 고성능 : 기계 코드로 컴파일, 빠른 달리기 속도; 2. 동시 프로그래밍 : 고어 라틴 및 채널을 통한 멀티 태스킹 단순화; 3. 단순성 : 간결한 구문, 학습 및 유지 보수 비용 절감; 4. 크로스 플랫폼 : 크로스 플랫폼 컴파일, 쉬운 배포를 지원합니다.

SQL 분류의 진술에 의한 순서 결과가 때때로 무작위로 보이는 이유는 무엇입니까?SQL 분류의 진술에 의한 순서 결과가 때때로 무작위로 보이는 이유는 무엇입니까?Apr 02, 2025 pm 05:24 PM

SQL 쿼리 결과의 정렬에 대해 혼란스러워합니다. SQL을 학습하는 과정에서 종종 혼란스러운 문제가 발생합니다. 최근 저자는 "Mick-SQL 기본 사항"을 읽고 있습니다.

기술 스택 컨버전스는 기술 스택 선택의 프로세스 일뿐입니까?기술 스택 컨버전스는 기술 스택 선택의 프로세스 일뿐입니까?Apr 02, 2025 pm 05:21 PM

기술 스택 컨버전스와 기술 선택의 관계, 소프트웨어 개발에서 기술 스택의 선택 및 관리는 매우 중요한 문제입니다. 최근에 일부 독자들은 ...

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)