>백엔드 개발 >Golang >Go 언어에는 어떤 패키지가 있어야 합니까?

Go 언어에는 어떤 패키지가 있어야 합니까?

青灯夜游
青灯夜游원래의
2023-01-04 20:30:174238검색

go 언어에는 메인 패키지가 있어야 합니다. Go 언어는 컴파일된 정적 ​​언어이므로 Go 언어 프로그램을 실행하기 전에 Go 언어 실행 프로그램을 생성하기 위해 바이너리 실행 파일로 컴파일해야 하며, 이 패키지에는 main이라는 패키지가 있어야 합니다. 그리고 주요 기능은 단 하나뿐입니다.

Go 언어에는 어떤 패키지가 있어야 합니까?

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

1. 패키지와 소스 파일의 개념

Go 프로그램은 패키지를 서로 연결하여 구성됩니다. 패키지는 패키지에 속하는 상수, 유형, 변수, 함수를 정의하는 소스 파일로 구성됩니다(동일 패키지의 모든 파일에서 액세스할 수 있으며 내보내기를 통해 다른 패키지에서도 사용할 수 있음). 각 패키지의 코드는 작은 재사용 단위로 사용될 수 있으며 다른 프로젝트에서 참조될 수 있습니다.

각 소스 파일에는 자신이 속한 패키지를 정의하는 패키지 문이 있고, 그 뒤에는 어떤 패키지를 사용해야 하는지 선언하는 비어 있을 수 있는 가져오기 컬렉션이 있고, 함수, 유형, 변수 및 상수의 빈 컬렉션이 뒤따를 수 있습니다. .

code와 errno라는 파일에 속한 패키지가 모두 errno임을 알 수 있습니다. 이는 Go가 Java처럼 클래스를 재사용 단위로 사용하지 않고 패키지를 작은 재사용 단위로 사용한다는 것을 보여줍니다.

요약: Go에서 가장 작은 단위는 패키지이며, 패키지 아래에는 여러 개의 소스 파일이 있을 수 있습니다. 소스 파일은 클래스 클래스와 동일합니다. 각 소스 파일은 package 문을 통해 해당 파일이 속한 패키지를 선언합니다.

2. 메인 패키지

Go 언어에서 main이라는 패키지는 특별한 의미를 갖습니다. Go 언어 컴파일러는 이 이름을 가진 패키지를 바이너리 실행 파일로 컴파일하려고 시도합니다. Go로 컴파일된 모든 실행 프로그램에는 main이라는 패키지가 있어야 합니다.

간단히 말하자면, Go 언어 실행 프로그램을 생성하려면 main이라는 패키지가 있어야 하고, 이 패키지 아래에는 단 하나의 main 함수만 있어야 합니다.

컴파일러가 특정 패키지의 이름이 main인 것을 발견하면 즉, main()이라는 함수가 있음을 확실히 알 수 있습니다. 그렇지 않으면 실행 파일이 생성되지 않습니다. main() 함수는 프로그램의 진입점이므로 이 함수가 없으면 프로그램 실행을 시작할 수 없습니다. 프로그램이 컴파일되면 메인 패키지를 선언하는 코드가 위치한 디렉터리의 디렉터리 이름이 바이너리 실행 파일의 파일 이름으로 사용됩니다.

3. 패키지 디렉토리의 명명 규칙

Go 언어를 개발하기 전에 Go 언어의 특성과 사양 중 일부를 이해해야 합니다. 그렇지 않고 자신만이 이해할 수 있는 프로그램을 개발한다면 그것은 단지 자신만의 오락이 될 것입니다. 이 섹션에서는 일부 고전적인 코드와 회사 개발 습관을 기반으로 한 명명 규칙의 예를 제공합니다.

다음은 이 예제 다이어그램을 기반으로 제가 이해한 개발 사양을 설명합니다.

  • conf: 이 디렉토리 주로 구성 파일을 저장합니다

  • handler: 주로 일부 프로그램의 항목 파일을 저장하며 Java의 Collter 계층에 해당합니다.

  • model: 주로 데이터베이스 작업과 관련된 파일을 저장합니다.

  • pkg: 주로 일부 공통 도구를 저장합니다. 클래스 및 기타 코드

  • 라우터: 주로 라우팅 서비스의 코드를 저장합니다.

  • service: 주로 비즈니스 코드를 저장합니다.

  • vendor: 주로 프로젝트 자체의 종속성 패키지를 저장합니다.

  • conf. yaml: 디렉토리에 배치하거나 conf 폴더

  • main.go에 배치할 수 있는 프로젝트의 구성 파일: 프로그램의 진입점은 일반적으로 루트 디렉토리에 배치됩니다.

4 . Import

패키지 소개 원리

프로그램 초기화 및 실행은 메인 패키지에서 시작됩니다. 기본 패키지가 다른 패키지도 가져오는 경우 컴파일하는 동안 순서대로 가져옵니다. 여러 곳에서 가져온 패키지는 한 번만 가져옵니다. 패키지를 가져올 때 해당 패키지가 다른 패키지도 가져오는 경우 다른 패키지를 먼저 가져온 다음 해당 패키지의 패키지 수준 상수 및 변수가 초기화된 다음 init 함수(있는 경우)가 실행됩니다. .) 등이 있습니다. 가져온 패키지가 모두 로드된 후 메인 패키지의 패키지 수준 상수 및 변수가 초기화되고 메인 패키지의 init 함수가 실행되고(존재하는 경우) 마지막으로 메인 함수가 실행됩니다.
패키지를 가져올 때 종속성은 높은 우선순위에서 낮은 우선순위에 따라 대략 다음과 같이 조회됩니다.

  • 현재 패키지 아래의 공급업체 디렉터리.
  • src 아래에서 Vendor 디렉터리를 찾을 때까지 상위 디렉터리에서 검색하세요.
  • GOPATH에서 종속 패키지를 찾으세요.
  • GOROOT 디렉터리를 살펴보세요

패키지 가져오기 구문

Go 코드 작성 시 패키지 파일을 가져오는 데 import 명령어를 자주 사용하는 경우가 있는데, 보는 방법은

  • 정기 가져오기입니다.

import(
    "fmt"
)

그러면 다음과 같이 코드에서 호출할 수 있습니다

fmt.Println("hello world")

上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块。

  • 点操作

import (
   . "fmt"
)

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”)  可以省略的写成Println(“hello world”)。注意:该包内的函数不能与其重名。

  • 别名操作

import( f “fmt” )

别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字,别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”),通常为了解决导入多个重名包的问题。

  • _操作

import (
    _ "github.com/go-sql-driver/mysql"
)

_操作其实只是引入该包但不使用,通常只为了执行该包中所有的init()函数,最常见的就是上面的mysql包。

【相关推荐:Go视频教程编程教学

위 내용은 Go 언어에는 어떤 패키지가 있어야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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