“Hello World” 를 출력하는 간단한 프로그램을 만들자.
~/src/golang-book/chapter2 라는 폴더를 만들고, 다음의 내용으로 main.go 파일을 만든다.
1 2 3 4 5 6 | package main import "fmt" func main() { fmt.Println("Hello World") } | cs |
해당 폴더로 이동하여 다음과 같이 실행한다.
1 2 3 | ~/go# cd src/golang-book/chapter2 ~/go/src/golang-book/chapter2# go run main.go Hello World | cs |
Hello World가 터미널에 출력되는 걸 확인할 수 있다.
go run 명령은 뒤이어 오는 go 파일을 임시 디렉토리에 실행가능한 형태로 저장한 후 실행하게 된다.
위의 Hello World 소스를 한 줄씩 분석해보자.
1 | package main | cs |
라인 1은 일명 패키지 선언으로, 모든 Go 프로그램은 패키지 선언으로 시작해야 한다. 패키지는 코드를 구성하고 재사용하기 위한 하나의 방법론으로, Go 프로그램에는 2가지 - executables 과 libraries - 타입이 있다. 실행파일은 윈도우상에서 .exe 로 끝나는 식으로 터미널에서 바로 실행이 가능한 파일이다. 이에 반해 라이브러리는 다른 프로그램에서 사용가능하도록 모아둔 코드의 집합체라고 할 수 있다.
2 | import "fmt" | cs |
import 키워드는 다른 패키지에서 어떻게 코드를 가져오는지를 보여준다. format 의 축약인 fmt 패키지는 인풋과 아웃풋의 포맷을 구현한다. 주의해야할 점은 fmt 를 큰따옴표로 감싼다는 점이다. 큰따옴표(double quotes) 는 “expression” 타입을 가진 “string literal”의 역할을 수행한다.
4 5 6 | func main() { fmt.Println("Hello World") } | cs |
함수는 input과 output, 그리고 순서대로 실행되는 명령문이라고 불리는 일련의 step 으로 구성된다. 모든 함수는 func 키워드와 함수의 이름으로 시작되며, 뒤이어오는 ( ) 안에 매개변수 리스트가 들어가고, 마지막 body 는 중괄호(curly braces)으로 감싼다. 위의 함수는 매개변수가 없으며, 하나의 명령문으로 구성된다.
위의 예에서 명령문인 fmt.Println("Hello World")는 3개의 요소로 구성된다. 하나는 fmt 패키지내의 Println 이라는 함수에 접근해서 새로운 문자열인 Hello World 를 생성하여 해당 문자열을 유일한 인수로 호출하는 것이다.
Println 함수에 대해 더 알고 싶다면 터미널 상에서 다음과 같이 입력한다.
1 2 3 4 5 6 7 8 | ~/go/src/golang-book/chapter2# godoc fmt Println use 'godoc cmd/fmt' for documentation on the fmt command func Println(a ...interface{}) (n int, err error) Println formats using the default formats for its operands and writes to standard output. Spaces are always added between operands and a newline is appended. It returns the number of bytes written and any write error encountered. | cs |
'프로그래밍 Programming' 카테고리의 다른 글
Go 언어 입문 - Types - Strings (golang-book) (0) | 2018.08.28 |
---|---|
Go 언어 입문 - Types - Numbers (golang-book) (0) | 2018.08.28 |
Strings, bytes, runes and characters in Go - (4) Range loops, Libraries (0) | 2018.08.25 |
Strings, bytes, runes and characters in Go - (3) Code points, characters, and runes (0) | 2018.08.25 |
Strings, bytes, runes and characters in Go - (2) UTF-8 and string literals (0) | 2018.08.25 |