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언어 출력 함수에 대한 공부는 여기서 마치고 입력 함수를 공부해 보러 가려고 한다.
아마 {입, 출력 함수}, {조건, 반복문}, {메모리 할당, 해제, 접근} 정도만 공부해도 알고리즘 문제 풀기에는 문제가 없을 것이다.
힘내서 공부하자는 뜻이다.
소스코드는 깃허브를 참고.
'Computer_Language > GO' 카테고리의 다른 글
[Go] 5. Go(golang)의 반복문 (0) | 2019.09.23 |
---|---|
[Go] 4. Go(golang)의 자료형과 변수 선언 (0) | 2019.09.11 |
[Go] 3. Go(Golang)의 입력 함수 (scan) (0) | 2019.08.31 |
[Go] 1. Go Language(Golang)에 대하여 (0) | 2019.08.30 |
[Go] Go(Golang) 윈도우 개발 환경 구축하기 (0) | 2019.08.27 |