10.1. 프로그램언어 고(Go)의 패키지 만들기

프로그램언어 고(Go)의 패키지 선언 방법

프로그램 언어 Go에서 패키지를 선언하는 방법은 다음과 같습니다.

Go 언어에서는 패키지를 사용하여 관련된 소스 코드 파일들을 그룹화합니다. 패키지 이름은 보통 도메인 이름을 거꾸로 한 것을 사용합니다.

패키지를 선언하는 방법은 패키지로 그룹화할 소스 코드 파일의 가장 위에서 ‘package 패키지이름’으로 선언합니다.

package main

import "fmt"

func main() {
  fmt.Println("Hello World") 
}

위의 예제 코드에서 package main으로 패키지를 선언하고 있습니다. 이 파일은 main 패키지에 속합니다.

패키지 이름을 지을 때는 다음 규칙을 따릅니다.
– 소문자로 시작해야 합니다.
– 대문자 또는 ‘_’를 사용할 수 있습니다.

패키지는 서로 다른 파일들에 선언할 수 있고, 같은 패키지의 파일들은 서로 자유롭게 접근할 수 있습니다.

다른 패키지의 함수나 변수를 사용하려면 import 문을 사용하여 가져와야 합니다.

이러한 방식으로 패키지를 사용하면 관련 함수와 변수를 그룹화하여 소스 코드를 모듈화할 수 있습니다.

프로그램언어 고(Go)에서의 패키지 내 변수 및 함수 등록하기

프로그램언어 고(Go)에서 패키지 내에 변수, 함수, 타입 등을 등록하고 사용하기 위해서는 export 키워드를 사용합니다.

예를 들어 다음과 같이 패키지 내에 변수, 함수, 타입을 정의할 수 있습니다.

package mypackage

var MyVariable string // 패키지 레벨 변수

type MyType int // 패키지 레벨 타입

func MyFunction() {
  // 함수 구현
}

위에서 정의한 것들은 해당 패키지 내에서만 사용 가능합니다.

다른 패키지에서 이를 사용하기 위해서는 각 요소 앞에 export 키워드를 붙여주어야 합니다.

package mypackage

var ExportedVariable string // export된 패키지 변수

type ExportedType int // export된 패키지 타입

func ExportedFunction() {
  // 함수 구현
} 

이제 다른 패키지에서는 이렇게 export된 변수, 타입, 함수를 아래와 같이 사용할 수 있습니다.

import "mypackage"

func main() {
  variable := mypackage.ExportedVariable 

  type := mypackage.ExportedType

  mypackage.ExportedFunction() 
}

이처럼 Go에서의 export란 패키지 외부에서 사용할 수 있도록 패키지 요소 앞에 export 키워드를 붙이는 것을 의미합니다.

파스칼 표기법 또는 대문자로 시작하는 이름을 사용하는 것이 관습입니다.

export를 사용하면 패키지간 의존성을 줄이고, API를 정의하는 효과가 있습니다.

패키지의 일부 기능만 공개할 수 있어 캡슐화의 효과도 있습니다.

프로그램언어 고(Go)에서의 패키지 내용 문법 체크하기

프로그램언어 고(Go)에서 패키지 내용을 문법 체크하고 싶다면 gofmt 명령어를 사용하면 됩니다.

gofmt는 Go 소스 코드의 포맷팅을 위한 명령어로, 주로 코드 정렬이나 인덴트 처리 등을 해주는 역할을 합니다.

다음은 gofmt를 사용한 패키지 내용 문법 체크 방법의 예제입니다.


package main

import "fmt"

func main() {
	fmt.Println("Hello World") 
}

위 코드를 test.go 파일에 저장했다고 가정하겠습니다.

터미널에 다음과 같이 gofmt 명령어를 사용하면 저장된 test.go 파일의 문법을 체크하고 포맷팅을 해줍니다.

“`
$ gofmt -w test.go
“`

-w 옵션은 포맷팅된 결과를 파일에 저장한다는 의미입니다.

문법 체크만 하고 싶다면 -l 옵션을 사용하면 됩니다.

“`
$ gofmt -l test.go
“`

여기서 문법 오류가 발생하지 않으면 패키지 내용에 문법 오류가 없다고 보면 됩니다.

문법 체크 시 오류가 발생하면 터미널에 오류 메시지가 출력되므로 수정 후 다시 확인할 수 있습니다.

이처럼 gofmt 명령어를 사용하면 패키지 내용의 문법을 손쉽게 체크할 수 있습니다.

프로그램언어 고(Go)에서의 패키지 빌드 및 실행 방법

고(Go)언어에서 패키지를 빌드하고 실행하는 방법은 다음과 같습니다.

첫째, 고(Go)언어로 패키지를 만들기 위해서는 먼저 패키지 폴더를 생성합니다. 이 폴더 안에는 .go 확장자를 가진 소스코드 파일들이 들어갑니다.


mypackage/
    mypackage.go
    mycode.go

이러한 구조로 패키지 폴더를 만듭니다. 그리고 각 파일의 첫 줄에는 패키지 이름을 정의합니다.


package mypackage

둘째, 패키지 내부의 코드를 작성합니다. 함수, 변수, 상수 등을 정의할 수 있습니다.


package mypackage

import "fmt"

const MY_CONST = "mypackage"

func Hello() {
    fmt.Println("Hello from", MY_CONST) 
}

이와 같이 실제 로직을 구현하는 코드를 작성합니다.

셋째, 터미널에서 패키지 폴더로 이동해서 go build 명령어로 빌드합니다.


$ cd mypackage
$ go build

go build 명령어로 패키지를 빌드하면 실행 파일이 생성됩니다.

넷째, 빌드된 실행 파일을 실행합니다.


$ ./mypackage  
Hello from mypackage

이렇게 패키지를 빌드하고 실행할 수 있습니다. 주의할 점은 패키지 이름과 폴더 이름이 일치해야 한다는 것입니다.

이상으로 고(Go)언어의 패키지 빌드와 실행 방법에 대한 간략한 설명을 드렸습니다. 추가로 궁금한 점이 있으시면 문의 주시기 바랍니다.

프로그램언어 고(Go)에서의 패키지 인포트 방법

고(Go)언어에서 패키지를 가져오기 위해서는 import 키워드를 사용합니다. 예를 들어 다음과 같이 fmt 패키지를 가져올 수 있습니다.

import "fmt"

이렇게 하면 fmt 패키지에서 제공하는 함수와 타입을 사용할 수 있습니다. 패키지 이름 뒤에 별칭을 지정할 수도 있습니다.

import f "fmt"

이렇게 하면 f.Println() 처럼 f를 접두사로 사용할 수 있습니다.

여러 개의 패키지를 한 번에 가져올 수도 있습니다.

import (
    "fmt"
    "os"
)

패키지 이름을 생략하면 해당 패키지의 init() 함수만 호출됩니다.

import (
    _ "net/http/pprof"
)

위 예제에서는 net/http/pprof 패키지의 init() 함수만 호출되고 패키지 자체는 가져오지 않습니다.

패키지는 보통 GOPATH/src 아래에 위치합니다. 만약 다른 곳에 위치한다면 import 시 절대 경로나 상대 경로를 사용할 수 있습니다.

import "C:/goprograms/mylib"
import "./mylib"

이처럼 고(Go)언어의 패키지 가져오기는 간단하고 유연하게 설계되어 있습니다. 필요한 기능이나 라이브러리가 있는 패키지를 쉽게 불러와 사용할 수 있도록 도와줍니다.

Leave a Comment