이 글은 제가 Go를 학습한 내용을 정리한 글 입니다.
Go를 학습한 레퍼런스는 이곳에서 확인하실 수 있습니다.
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Go는 구글에서 개발한 프로그래밍 언어로써 실용성을 목적으로 하는 언어입니다.
가장 강력한 특징으로는 컴파일 언어이지만, 컴파일 속도가 빨라 인터프리터 언어처럼 사용할 수 있습니다.
brew install go
$ go version
go version go1.10 darwin/amd64
// .bash_profile
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
$ mkdir -p $GOPATH/src $GOPATH/pkg $GOPATH/bin
위에 .bash_profile
에서 설정한 GOPATH는 Go 언어로 된 프로젝트를 사용하거나 개발할 때 사용되는 디렉터리를 가리키는 환경변수입니다.
이 GOPATH로 설정한 위치에 src
, pkg
, bin
3가지 파일을 생성하였는데요. 이 3 가지 파일들은 아래와 같은 역할들을 가지고 있습니다.
환경 변수를 설정한 뒤에는 커맨드창을 재시작 해줘야 변경된 환경변수가 적용됩니다.
이제 Go에 대한 설치와 설정을 완료하였으니 프로그래밍의 시작인 Hello, world를 찍어보겠습니다.
우선, 아래의 위치에 다음과 같은 디렉터리를 생성합니다.
$GOPATH/src/github.com/{your-user-id}/hello
그 후, 이 디렉터리 위치에 hello.go
파일을 생성하고 다음과 같이 입력합니다.
package main
import "fmt"
func main() {
fmt.Println("Hello, world")
}
코드를 작성 한 후, 커맨드 창에 go run hello.go
를 입력하면 커맨드 창에 Hello, world
가 찍히는 것을 볼 수 있습니다.
이 코드에 대한 설명을 하자면,
package main
은 func main을 정의 하기 위한 패키지이며, 이 패키지는 그룹 되어진 Go 코드 입니다. (Javsscript의 라이브러리와 같은)import "fmt"
는 Go에서 파일 출력을 할때 사용되는 라이브러리로 func main
내부를 보시면 fmt.Println
함수를 이용해서 문자열을 출력하고 있습니다. func main()
은 Go에서 함수를 정의 할 때 사용되는 키워드로 중괄호를 사용해서 범위를 지정하고 있습니다. 위에 작성한 Hello, world
코드를 사용해서 테스트 코드를 작성해 보겠습니다.
우선 테스트 코드를 작성하기 앞서 테스트 하기 쉽게 도메인
코드를 분리 해 보겠습니다.
도메인
코드란 외부 세계에 영향을 끼치지 않는 코드를 말하며, 위의 예제를 예로 들자면 fmt.Println
함수가 파일출력으로 외부에 영향을 끼치는(Side-effects를 일으키는) 코드이며, 이 코드 내부의 문자열을 따로 제공하는 코드를 도메인
코드로써 분리 할 수 있습니다.
package main
import "fmt"
func Hello() string {
return "Hello, world"
}
func main() {
fmt.Println(Hello())
}
이 코드에 추가적인 설명을 하자면 func Hello()
함수 선언의 옆에 string
은 이 함수의 출력 타입을 의미합니다.
이렇게 도메인
함수를 분리 한 후, 다음과 같은 파일을 생성합니다.
// hello_test.go
package main
import "testing"
func TestHello(t *testing.T) {
got := Hello()
want := "Hello, world"
if got != want {
t.Errorf("got %q want %q", got, want)
}
}
작성한 테스트 코드를 실행시키려면 커맨드 창에 go test
를 입력하면 테스트 결과를 말해줍니다.
이 파일의 코드를 설명하자면, test
를 위해 import "testing"
코드를 작성하였으며, 테스트 함수를 작성하며 인자로 t *testing.T
를 넘겨주었습니다.
또한 기본적인 Go 문법을 정리하자면,
:=
키워드를 이용해서 왼쪽 대입자에 대해 오른쪽 대입자의 값을 주입합니다. if
키워드를 사용하여 조건문을 작성 할 수 있습니다. %q
를 문자열에 넣고 뒤에 ,
를 사용하여 넣은 갯수 대로 변수를 대입해 값을 전달합니다.
Go lang Go!