2 분 소요


Tutorial: Get started with Go를 정리한 글입니다.

이 튜토리얼은 Go 프로그래밍에 대해 간단하게 소개하고 있습니다.
그 과정에서 다음 과정을 수행할 수 있습니다.

아직 설치하지 않았다면, Go를 설치합니다.
간단한 “Hello, world”코드를 작성합니다.
go 명령을 사용하여 코드를 실행합니다.
Go 패키지 검색 도구를 사용하여 자신의 코드에서 사용할 수 있는 패키지를 찾습니다.
외부 모듈의 함수를 호출합니다.

참고: 다른 튜토리얼은 튜토리얼을 참조하십시오.


전제 조건

Go를 시작하기 전에 필요한 전제 조건은 다음과 같습니다:

  • 약간의 프로그래밍 경험
    절차적(Procedural) 프로그래밍의 함수 개념을 알면 도움이 됩니다.
  • 코드를 편집하는 도구
    대부분의 텍스트 편집기는 Go를 잘 지원합니다.
    VSCode(무료), GoLand(유료) 및 Vim(무료)이 인기가 많습니다.
  • 명령 터미널
    Go는 Linux 및 Mac의 모든 터미널, Windows의 PowerShell 또는 cmd에서 잘 작동합니다.
  • 작업 환경
    Ubuntu(WSL2 Ubuntu), Docker Desktop 이 설치되었다고 가정하겠습니다.

WSL2, Ubuntu, Docker Desktop이 없다면,
windows 10 에 WSL2, Ubuntu, Docker 설치 by mozily 를 참고하세요.




설치하기

공식 사이트인 Download and install에서 플랫폼에 맞는 과정을 진행합니다.

추가로 Go 패키지를 사용하기 위해서는 전역 GOPATH 를 설정하는 것이 편합니다.

GOPATH 를 설정하기 위해 다음 내용을 ~/.bashrc에 추가합니다:

  export GOPATH={GOPATH 경로}
  export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Go 버전을 업그레이드 한다면 How to update the Go version을 참고하세요.

Go를 삭제 한다면 Managing Go installations을 참고하세요.




코드 작성하기

Hello, World를 만들어보겠습니다.
먼저, 명령 프롬프트를 열고 작업 홈 디렉토리를 만들고 이동합니다.

$ cd {Project Home}
$ mkdir hello
$ cd hello


텍스트 에디터에서 다음과 같이 hello.go 를 작성합니다:

package main

import "fmt"

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

위 코드에 대해 설명하면,

  • main 패키지 선언합니다. Go 패키지는 기능을 그룹화하는 방법입니다.
  • 텍스트 서식을 지정하고, 콘솔에 출력하는 기능이 포함된 fmt 패키지를 가져옵니다.
    이 패키지는 Go 를 설치할 때 포함된 표준 라이브러리 패키지 중 하나입니다.
  • main 함수는 콘솔에 “Hello, World!” 메시지를 인쇄합니다.
    파일을 실행하면, 기본적으로 main 함수가 실행됩니다.


코드를 실행하고 결과를 확인합니다.

$ go run hello.go
Hello, World!

go run 명령은 Go 로 작업할 때, 많이 사용하는 명령 중 하나입니다.
다른 기능을 확인하려면 다음 명령을 실행해보세요:

$ go help




외부 패키지 코드 호출하기

다른 사람이 이미 구현했을 수도 있는 작업을 만들기 전에, 이 기능을 포함하는 패키지를 찾을 수 있습니다.

외부 모듈로 메시지를 더 흥미롭게 만들어보겠습니다.

  1. pkg.go.dev에 방문하여 quote 패키지를 검색합니다.
  2. 검색 결과에서 rsc.io/quote 패키지를 찾아서 클릭합니다. (rsc.io/quote/v3는 무시하겠습니다.)
  3. Doc 탭에서 사용할 수 있는 함수에 주목합니다. 이 Go 함수를 사용하겠습니다.
  4. 페이지 상단의 내용처럼, 패키지 quotersc.io/quote 모듈에 포함되어 있습니다.

pkg.go.dev 사이트에서 원하는 기능이 있는 패키지를 포함하는 게시된 모듈을 찾을 수 있습니다.
패키지는 rsc.io/quote과 같은 모듈로 게시되며 다른 모듈에서 사용할 수 있습니다.
모듈은 시간이 지남에 따라 새로운 버전으로 개선되며, 향상된 버전을 사용하도록 코드를 업그레이드할
수 있습니다.


코드에서, rsc.io/quote 패키지를 가져온(import) 후 Go 함수를 추가합니다.
수정된 코드는 다음과 같습니다:

package main

import "fmt"
 
import "rsc.io/quote"

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


종속성(Dependencies) 추적을 위해 모듈을 추가합니다.

코드가 다른 모듈에서 패키지를 가져올 때,
go.mod 파일은 이 패키지를 제공하는 모듈과 버전을 리스팅합니다.
이 파일은 소스 코드 저장소에 포함시켜 코드에 있어야 합니다.

$ go mod init hello
go: creating new go.mod: module hello


코드를 실행하여 함수가 생성한 메시지를 확인합니다.

$ go run hello.go
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2
Don't communicate by sharing memory, share memory by communicating.

실행 결과 통신과 관련된 팁 메시지를 출력합니다.

코드를 실행하기 전에, go run은 import한 패키지가 포함된 rsc.io/quote 모듈을
찾아서 다운로드합니다.
버전을 지정하지 않으면, 최신 버전(v1.5.2)을 다운로드합니다.
Go 빌드 명령은 import 패키지에 필요한 모듈을 찾도록 설계되었습니다.




더 많은 코드 작성하기

이 포스트에서 Go를 설치 외의 몇 가지 기본 사항들을 배웠습니다.
더 많은 코드를 작성하려면 Go 모듈 만들기을 참고하세요.




참고자료

댓글남기기