/ PROGRAMMING, GO

Go(Golang) 튜토리얼

인터프리터 언어의 편리함과 컴파일 언어의 빠른 속도라는 장점을 적절히 결합한 Go 언어를 try 해 보자.

Go 설치

이 링크에서 인스톨러를 다운받을 수 있다.

모듈 초기화, go.mod 생성

내가 이해한 바에 의하면, Go로 작성된 프로그램은 하나의 모듈 또는 패키지에 대응되며, 패키지는 특정한 모듈에 속한다. 프로젝트 폴더를 생성하고, 최상위에서 다음 명령어를 실행해 보자.

go mod init <module path>

이 명령어를 실행해 보면 go.mod 파일이 생성된다. 여기서 초기화한 모듈 내에서 작성한 코드에서 다른 패키지를 import할 때, 초기화 대상인 모듈을 포함하여 그 모듈이 import한 패키지들을 제공하는 모듈들은 모두 go.mod에 적혀져 관리되게 된다. 위 명령어를 실행함으로써, 모듈 내에서 필요한 모듈들을 추적하고 관리할 수 있게 된다.

여기서 생소한 것은 module path인데, 모듈을 배포할 예정이라면 실제 Go tool을 사용해서 해당 모듈을 다운받을 수 있는 링크를 함께 적어야 한다(예: github.com/mymodule). 자세한 것은 이 문서를 참조하면 된다. 여기서는 실습만을 위해 모듈을 생성하고 있으므로 대충 example/hello로 지정해 보자.

Hello, world

이제 실제 소스 코드를 작성해 보자. hello.go 파일을 만들고 다음 내용을 작성한다.

package main

import "fmt"

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

여기서는 main 패키지를 선언하고, 표준 라이브러리 패키지에 해당하는 fmt 패키지를 임포트한 후,

main() 함수를 정의한다. 그리고 fmt 패키지가 제공하는 Println() 함수를 호출하여 Hello, World!라는 문자열을 출력하는 것이다.

go run .

프로젝트 최상단에서 위 명령어를 실행하면, Hello, World!가 출력된다.

go build .

Go는 컴파일 언어이므로 실행 파일도 생성할 수 있다. 위 명령어를 실행하면 Windows 기준으로 hello.exe가 생성된다.

외부 패키지 사용하기

이제 소스 코드를 조금만 바꿔서 다음과 같이 수정해 보자.

package main

import "fmt"

import "rsc.io/quote"

func main() {
    fmt.Println(quote.Go())
}

이번에는 rsc.io/quote 라는 패키지를 import한다. 이것은 Go가 제공하는 표준 라이브러리가 아니므로, Python에서 pip 쓰듯이 별도로 다운로드가 필요하다.

위와 같은 외부 패키지는 이 링크에서 검색 가능하다. 패키지가 제공하는 함수 및 각 패키지가 어떤 모듈에 속해 있는지 등을 확인 가능하다.

이제 다음 명령어를 실행한다.

go mod tidy

이 명령어를 실행하면 Go는 소스 코드에서 어떤 패키지를 import하는지 확인하고 go.mod 파일을 갱신하게 된다. 자세한 것은 이 페이지를 참조하면 된다.

go help

위 명령어로 go에서 사용 가능한 여러 명령어들을 확인할 수 있다.

참고 문헌

Go Tutorial