블로그로 돌아가기

Go에서 패키지를 가져오는 방법

Go에서 패키지를 가져오는 방법

Go (Golang으로도 알려진) 은 오픈 소스, 정적 타입 프로그래밍 언어입니다. 원래 Google에서 개발했습니다. Go의 주요 특징으로는 단순성, 고성능, 가독성, 효율성 등이 있습니다.

다른 주요 프로그래밍 언어와 마찬가지로, Go의 표준 라이브러리는 풍부한 패키지 세트를 제공합니다. 하지만 서드파티 패키지를 통합하여 기능을 확장할 수도 있습니다. 이 가이드는 패키지를 가져오고 이를 Go 프로젝트에 통합하는 방법을 보여줍니다.

사전 요구 사항

이 가이드를 따르려면 다음과 같은 구성 요소를 준비해야 합니다:

1단계 – Go 설치하기

우리는 이미 핵심 Go 프로그래밍 언어를 Ubuntu 20.04에 설치하는 방법에 대해 살펴보았습니다. 하지만 더 쉬운 대안이 있습니다: g  (가벼운 Go 버전 관리자).

우리가 사용할 이유는 g 은 Ubuntu’s 패키지 저장소나 snap에서 제공하는 Go 버전 중 어느 것도 최신 Go 버전을 제공하지 않기 때문입니다 (v1.18 이 가이드를 작성하는 시점 기준). 어떤 프로그래밍 언어 패키지든 사용 가능한 최신 버전을 사용하는 것이 항상 권장됩니다.

다음 명령은 g  설치 스크립트를 실행합니다:

Import Packages in Go install go

Import Packages in Go installing go 2

변경 사항을 적용하려면 쉘 세션을 다시 시작해야 합니다. 다시 시작한 후 설치를 확인하세요:

Import Packages in Go check go version

Go를 설치한 후에는 다음을 설치하는 것도 권장됩니다. gopls . 이것은 공식 Go 언어 서버입니다. VS Code, Vim, Emacs, Sublime Text, Atom 등 다양한 텍스트 에디터와 호환됩니다. 다음 명령을 실행하세요:

이제 Go 프로그래밍 환경이 준비되었습니다.

2단계 – 샘플 Go 스크립트 만들기

이 가이드에서 설명하는 모든 코드는 단일 Go 스크립트에 들어갑니다. 샘플 Go 스크립트를 생성합니다:

스크립트를 변경한 후, 다음 Go 명령어를 사용하여 실행할 수 있습니다:

여기서 Go 컴파일러는 코드를 인터프리터 모드로 실행합니다.

3단계 – 표준 라이브러리 패키지 사용하기

Go는 표준 라이브러리에 방대한 컬렉션을 제공합니다. 이는 수많은 패키지로 구성되어 있으며, 예를 들면 다음과 같습니다:

  • fmt: C와 유사한 함수를 사용하여 형식화된 I/O를 구현합니다 ( printf  및 scanf ).
  • http: 이 패키지는 웹 서비스를 생성하고, 데이터를 전송 및 수신하는 기능을 제공합니다. 대상 프로토콜: http  등.

Go 프로젝트에 패키지를 포함하려면, import  문을 사용하여 구현해야 합니다. 이 문은 import  키워드와 패키지 이름을 함께 사용하여 선언됩니다. 예를 들어, math/rand 를 가져오려면 import 문은 다음과 같습니다:

다음 코드는 math/rand  패키지의 다양한 함수를 구현합니다:

이 코드는 화면에 10개의 무작위 정수(0~24)를 출력하는 간단한 for 루프를 보여줍니다. 여기에서:

  • rand.Int() : 이 함수 호출은 무작위 정수를 반환합니다.
  • rand.Intn() : 다음과 유사하게 작동합니다 rand.Int()  하지만 무작위 정수의 범위(0부터 지정된 숫자까지)를 정의하는 매개변수를 허용합니다.

다음으로, 코드를 실행합니다:

출력은 다음과 같이 표시됩니다:

random number program

기본적으로 난수 생성기의 시드 값이 고정되어 있으므로 출력 결과가 완전히 동일하다는 점에 유의하세요. 이것이 바로 의사 난수 생성기의 특징입니다. 다음에 대해 더 자세히 알아볼 수 있습니다 여기에 랜덤 시드.

4단계 – 여러 패키지 가져오기

더 크고 복잡한 프로젝트에는 여러 패키지를 포함해야 합니다. 이를 Go 코드로 어떻게 가져올까요? 유효한 한 가지 방법은 가져온 각 패키지에 대해 개별 import 문을 사용하는 것입니다. 하지만 이 방법은 다음과 같은 import 구조에 비해 비효율적입니다.

여기서 단일 import 문은 동시에 여러 패키지를 포함합니다. 이는 가독성을 높이는 동시에 작성해야 하는 코드의 양을 줄여줍니다.

다음 코드는 이 기능을 실제로 적용한 것입니다:

코드를 실행합니다:

출력 결과는 다음과 비슷할 것입니다:

importing multiple packages

5단계 – 추가 Go 라이브러리 설치

Go의 표준 라이브러리는 수많은 유용한 패키지를 제공합니다. 이들은 설계상 범용적입니다. 이를 통해 개발자는 특정 요구 사항을 충족하기 위해 표준 라이브러리를 기반으로 자체 패키지를 만들 수 있습니다. 공식 Go 패키지 데이터베이스를 확인해 보세요..

서드파티 Go 패키지를 구현해야 한다면 어떻게 해야 할까요? Go는 go install  명령을 제공합니다 ( go get 은 더 이상 사용되지 않습니다). 인터넷에서 모든 서드파티 Go 패키지를 가져올 수 있습니다.

실습을 위해 cobra- cli를 설치해 보겠습니다.  패키지입니다. 다음 Go 명령은 필요한 파일을 다운로드하고 설치하여 패키지를 Go 라이브러리 시스템에 통합합니다:

install cobra cli

The binary of cobra-cli 의 바이너리는 다음 위치에 있어야 합니다:

list gopath files

다른 패키지 파일들은 다음 위치에 있어야 합니다:

list package files

Go v1.11부터 Go 모듈은 가져오려는 패키지의 버전을 정의합니다. 이에 대한 자세한 설명은 여기에서 확인할 수 있습니다: Go Modules GitHub.

Step 6 – 패키지 별칭

다양한 상황에서 로컬 패키지와 가져온 패키지 사이에 패키지 이름 충돌이 발생할 수 있습니다. 이럴 때 별칭 지정을 통해 충돌을 해결할 수 있습니다. 별칭 지정 구조는 다음과 같습니다:

간단한 Go 프로그램을 수정하여 다음을 포함해 보겠습니다. fmt_alias 를 패키지 별칭으로 추가해 보겠습니다. 대상 패키지: fmt :

참고로, fmt.Printf() 를 사용하는 대신, 패키지 별칭인 fmt_alias.Printf() .

하지만 Go는 별칭을 그리 반기지 않습니다. 가져오기 이름 충돌을 피하기 위해 별칭을 사용할 때는 가장 로컬이거나 프로젝트에 특화된 가져오기에 별칭을 지정하는 것이 권장됩니다. 예를 들어, 로컬 패키지 strings 와 시스템 패키지 strings 를 둘 다 사용하고자 한다면, 시스템 패키지가 아닌 로컬 패키지에 별칭을 지정해야 합니다.

가장 좋은 방법은 애초에 이름 충돌을 피하는 것입니다.

7단계 – 가져오기 포맷팅

우리는 단일 import  문을 사용하여 모든 가져오기를 선언하는 방법을 배웠습니다. 만약 여러 개의 가져오기가 있다면 어떻게 해야 할까요? 예를 들어:

임포트 포맷팅은 패키지를 특정 순서로 정렬하여 코드의 일관성을 향상시킵니다. 임포트 순서만 정렬하기 때문에 무작위 커밋도 방지합니다. 또한 불필요한 코드 변동과 혼란스러운 코드 리뷰를 방지합니다.

대부분의 현대적인 에디터는 import를 자동으로 포맷팅해 줍니다. 또는 다음을 지원합니다: goimports. 업계에서는 goimports 를 수동으로 import를 정렬하는 대신 사용하는 것이 일반적인 관행입니다. 또한, goimports 는 코드의 스타일 변경 사항도 반영합니다.

다음은 import  블록에 goimports를 적용한 후의 모습입니다. :

어떤 패턴이 보이시나요?

  • 모든 표준 라이브러리가 먼저 그룹화됩니다.
  • 그룹은 빈 줄로 구분되어 코드 가독성을 높입니다.

마치며

Go에서 임포트(Imports)는 Go에 내장되지 않은 함수를 호출할 수 있도록 하는 강력한 기능입니다. 표준 라이브러리가 다양한 범용 패키지를 제공하는 한편, Go는 서드파티 패키지도 지원합니다. 이 가이드에서는 내장 및 서드파티 Go 패키지를 임포트하는 방법을 보여줍니다.

이 가이드에서는 인터프리터를 사용하여 Go 프로그램을 실행했습니다. 하지만 더 나은 성능을 위해 코드를 독립 실행형 바이너리로 컴파일할 수 있습니다. 자세한 내용은 여기에서 Go 프로그램 컴파일하기를 참고하세요. 방법을 알고 싶다면, Nginx로 Go 웹 애플리케이션을 배포하는 이 튜토리얼을 확인해 보세요. 또한, 다음을 소개하는 가이드를 살펴보실 수 있습니다: 자신만의 Go 패키지를 작성하는 방법.

Go 개발자이신가요? CloudSigma의 Go API 지원을 통한 프로젝트와의 원활한 통합.

즐거운 컴퓨팅 되세요!

author

Preslav Dobrev

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.