Computer_Language/GO

[Go] 2. Go(Golang)의 출력 함수 (print)

Joo-Topia 2019. 8. 30. 02:42

Go언어의 출력 함수에 대해서 알아보기 전에 먼저 "fmt"에 대해 알고 있어야 한다.

 

이전 글에도 다음과 같은 코드를 계속 사용했다.

import "fmt"

이 패키지는 Go언어에서 C언어의 printf 함수나 Python의 print 함수, Java의 println 함수와 같은 여러 가지 출력 함수를 사용할 수 있게 해주는 패키지이다. (출력뿐만 아니라 여러 가지 입력 함수 도 사용 가능하다.)

깃허브나 많은 블로그들의 Go언어 코드를 살펴보면 대부분 필수적으로 improt하는 패키지이다.

 

Go언어의 출력 함수 종류


"fmt"패키지를 통해 , Print, Println, Printf 함수를 호출할 수 있다.

호출 형식은 다음과 같다.

import "fmt"

fmt.Print("Hello world!")
fmt.Println("Hello world!")
fmt.Printf("Hello world!")

이제 각 함수를 좀 더 자세히 살펴보자.

 

1. Print


num := 5
fmt.Print(1, "\n")
fmt.Print(num, "\n")
fmt.Print(num, "hello", 1, "\n")

결과

Go언어의 Print 함수는 Python의 print함수와 비슷하다. 여러 가지 자료형을 콤마(', ')로 구분하여 함수 하나로 출력이 가능하다.

Python의 print 함수와 차이점은 띄어쓰기에 있다. Python의 print 함수의 default 옵션은 출력물들 사이에 한 칸이 떨어져 있는데, Go의 Print함수는 기본적으로 모든 변수들이 붙어서 출력된다는 점이다. (이런 건 강의에서 안 알려준다!)

 

2. Println


fmt.Println("주성민")
fmt.Println("줄이 바뀐다.")
fmt.Println(1234, "여러가지 자료형도 출력가능!")

결과

Go언어의 Println 함수는 Java의 println 함수와 비슷하다. Java에서는 +로 여러 가지 출력물을 묶었던 기억이 나는데 Go언어는 Print함수와 동일하게 콤마로 묶어서 출력이 가능하다.

신기하게도 띄어쓰기에서 차이점이 있다. 자세히 보면 콤마로 묶인 두 출력물 사이에 자동으로 띄어쓰기가 되어있다. Java에서는 출력 형식을 이쁘게 보여주기 위해 강제로 띄어쓰기를 삽입했던 기억이 나는군...

 

3. Printf


var arr [3]int = [3]int{1, 2, 3}
fmt.Printf("%d <- 이 정수와 같이 문자열을 출력\n", 3)
fmt.Printf("%v <- 배열도 그대로 출력\n", arr)

fmt.Printf("%5d <- 출력시 공간 할당가능\n", 3)
fmt.Printf("%05d <- 공간을 0으로 채우기도 가능\n", 3)

fmt.Printf("%.3f <- 소숫점 반올림 가능\n", 3.141592)
fmt.Printf("%10.3f <- 소수도 공간 할당 가능\n", 3.141592)

fmt.Printf("왼쪽정렬 -> %-5d <- 가능\n", 3)

결과

Go언어의 Printf는 C언어의 printf와 거의 같다. 실 사용하는데 아직 차이를 못 느꼈다.

다음은 서식 문자와 출력 형태를 "바로 실행해보면서 배우는 Go Lang" 강의에서 정리해둔 표이다.

서식문자 출력 형태
%t bool
%b 2진수 정수
%c 문자
%d 10진수 정수
%o 8진수 정수
%x 16진수 정수, 소문자
%X 16진수 정수, 대문자
%f 10진수 방식의 고정 소수점 실수
%F 10진수 방식의 고정 소수점 실수
%e 지수 표현 실수, e

%E

지수 표현 실수, E
%g 간단한 10진수 실수
%G 간단한 10진수 실수
%s 문자열
%p 포인터
%U 유니코드
%T 타입
%v 모든 형식
%#v #을 이용해구분할 수 있는 형식 표현

 


Go언어 출력 함수에 대한 공부는 여기서 마치고 입력 함수를 공부해 보러 가려고 한다.

아마 {입, 출력 함수}, {조건, 반복문}, {메모리 할당, 해제, 접근} 정도만 공부해도 알고리즘 문제 풀기에는 문제가 없을 것이다. 

힘내서 공부하자는 뜻이다.

 

소스코드는 깃허브를 참고.