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에서 사용 가능한 여러 명령어들을 확인할 수 있다.