Go Web Programming: [02/01] Hello, Go!!

Hello, Go!!

Go언어를 이용해서 응용 프로그램을 작성하기 전에 먼저 기본이되는 프로그램으로 시작 하도록 하겠습니다.
집을 짓기 전에 건물의 기초를 알아야 하듯이, 프로그램을 작성하는 것도 기본적인 것부터 시작해야 합니다.
본 장에서는, 가장 기본적인 문법을 학습하고 Go 프로그램을 작성하고 실행하는 것에 대해서 알아 보겠습니다.

Program

다음은 전통적인것으로서 대부분의 언어를 학습 할 때 화면에 hello world를 출력하는 프로그램을
작성하는 것으로 프로그래밍을 시작하게 됩니다.

준비 되셨나요? 시작하겠습니다!

package main

import "fmt"

func main () {
    fmt.Printf("Hello, world or 你好 세계 or καλημ ρα κóσμ or 안녕하세요 \n")
}

입력한 후 실행하면 다음과 같이 출력됩니다.

Hello, world or 你好 세계 or καλημ ρα κóσμ or 안녕하세요

설명

우리는 먼저 개념을 이해할 필요가 있습니다.

Go 프로그램은 모든것이 package로 구성되어 있습니다.

package <pkgName>(예제에서는 package main)이 한 줄이 현재 파일이 어떤 패키지에
속해 있는지를 나타냅니다. 또한 main 패키지는 바로 독립적으로 실행 할 수 있는 패키지임을 보여
줍니다. 컴파일 과정을 거치면 실행 파일이 생성 됩니다.

main 패키지가 아닌 다른 패키지일 경우에는 컴파일 과정 후에 * .a라는 파일이 생성 됩니다.
(패키지 파일이라고도 합니다.) $GOPATH/pkg/$GOOS_$GOARCH 경로에 생성 됩니다.
(Mac에서는 $GOPATH/pkg/darwin_amd64에 생성 됩니다.)

독립적으로 실행 할 수있는 Go 프로그램은,
반드시package main으로 시작 됩니다.

또한, 독립실행 패키지의 main 패키지에는 반드시 main 함수가 포함되어 있습니다.
main() 함수는 인수가없고, 반환 값 또한 없는 구조로 되어 있습니다. (main.main())

Hello, world ...와 같은 문자열을 화면에 출력하기 위해서, Printf() 함수를 사용 합니다.
이 함수는 fmt 패키지에 포함되어 있기 때문에, 시스템에서 기본적으로 제공하는 fmt 패키지를 임포트하고
있습니다. (예제의 경우 import "fmt")

패키지는 Python의 package와 비슷 합니다. 패키지를 사용하면 특별한 장점이 있습니다. 그것은 바로,
모듈화(프로그램을 여러 모듈로 분할)와 재사용성(각 모듈은 다른 프로그램에서 재사용) 입니다.

지금은 패키지의 개념을 이해하는 것으로 그치고, 자세한 내용은 패키지를 설명하는장에서 설명 합니다.

다섯번째 줄은 키워드 func를 통해 main() 함수를 정의하고 있습니다.
함수의 내용은 { ... } 안에 기록 합니다. 이런 방식은 C/C++, Java언어와 동일 합니다.

main() 함수는 아무런 인수도 없고 반환값도 없습니다.

뒷장에서 인자와, 0개 이상의 값을 반환하는 함수를 사용하는 방법에 대해서 학습하게 됩니다.

여섯번째 줄에서는 fmt 패키지에 정의 된 Printf() 함수를 호출 합니다.
이렇듯 함수는 <pkgName>.<funcName>형식으로 호출합니다. 이 점은 Python과 비슷 합니다.

1장에서 알아본것과 같이, 패키지 이름과 실제로 패키지가 존재하는 디렉토리의 이름이 달라도 상관 없습니다.
예제에서 말하는 <pkgName>이 실제 디렉토리 이름이 아닐 수 있습니다. 단지 package <pkgName>으로
선언 된 패키지 이름에 불과 합니다.

마지막으로, 우리가 출력 한 내용을 유심히 살펴보시면 ASCII코드가 아닌 문자가 많이, 포함 되어있는 것을 알 수
있습니다. 실제로 Go 언어UTF-8을 기본적으로 지원하고 있으며, 어떤 문자든지 직접 출력 할 수 있습니다.
당연히, UTF-8 문자를 식별자로 사용해도 오류가 발생하지 않습니다. (권장하지는 않습니다!!)

결론

Go언어는 package를 사용하여 코드를 구성 합니다.

main.main() 함수는 현재 파일이 실행 파일임을 의미 합니다.

Go언어는 기본적으로 UTF-8 문자열과 식별자를 사용하기 때문에, 언어차원에서 다국어를 지원하고 있습니다.