[Go] 03. fmt - 1. 출력

2024. 1. 14. 22:37Go

반응형

fmt 패키지는 OS가 제공하는 표준입출력(standard input/output)을 사용하여 프로그램 내부에서 입력/출력을 간편하게 처리하게 합니다.

Go언어의 기본 패키지입니다.


1. 출력용 함수

  • Print
    • 함수 입력값을 출력
  • Println()
    • 함수 입력값을 출력한 후 개행(new line)
  • Printf(서식문자열, 인수1, 인수2, ...)
    • 입력값에 정의한 서식문자열에 맞춰 인수를 출력합니다
package main

import "fmt"

func main() {
	var n = 12345.6789
	fmt.Print("1)")
	fmt.Println("2) n: ", n)
	fmt.Printf("3) n: %f => %.2f\n", n, n)
	fmt.Println("finish!!")
}
1)2) n:  12345.6789
3) n: 12345.678900 => 12345.68
finish!!

실수타입을 서식없이 출력하면, 기본형태로 출력됩니다.(12345.6789)
실수타입을 "%f"로 출력하면, 설정된 데이터타입에 맞춘 실수값이 출력되며, 소수점을 지정해주면 설정한 소수점만큼 반올림하여 출력됩니다.

Println 함수는 쉼표로 구분지어 나열한 값을 공백 한칸을 두고 출력하고
Print 함수는 쉼표로 구분지어 나열한 값을 공백없이 출력합니다.

fmt.Println("apple", "banana")
fmt.Println("-------")
fmt.Print("apple", "banana")
apple banana
-------
applebanana

2. 서식문자

%v는 데이터 타입에 맞춰서 기본형태로 출력하고,
%T는 데이터 타입을 출력합니다.

자주 이용되는 서식문자열은 %d, %f, %s지만, 예제를 통해 그 외의 서식문자열에 대해 알아보도록 합시다.


2.1. 정수 서식

정수를 나타내는 서식문자열로는 아래와 같이 다양한 타입들이 존재하는데,
그 중 %d, %o(%O), %c는 정수 타입에만 적용할 수 있는 서식입니다.

var n1 = 43
fmt.Printf("%%v(기본): %v\n", n1)
fmt.Printf("%%T(데이터타입): %T\n", n1)
fmt.Printf("%%d(10진수 정수): %d\n", n1)
fmt.Printf("%%b(2진수 정수): %b\n", n1)
fmt.Printf("%%o(8진수 정수): %o\n", n1)
fmt.Printf("%%O(8진수 정수, prefix로 0o 붙임): %O\n", n1)
fmt.Printf("%%x(16진수 정수): %x\n", n1)
fmt.Printf("%%X(16진수 정수): %X\n", n1)
fmt.Printf("%%c(유니코드 문자): %b\n", n1)

fmt.Print()

fmt.Printf("%v = %c(유니코드), %v = %c(유니코드)\n", 65, 65, 97, 97)
%v(기본): 43
%T(데이터타입): int
%d(10진수 정수): 43
%b(2진수 정수): 101011
%o(8진수 정수): 53
%O(8진수 정수, prefix로 0o 붙임): 0o53
%x(16진수 정수): 2b
%X(16진수 정수): 2B
%c(유니코드 문자): 101011

65 = A(유니코드), 97 = a(유니코드)

적용할 수 없는 타입의 경우, %!d(float64=1.2) 같은 형태로 출력됩니다.

var n2 = 1.2
fmt.Printf("%d, %o, %c, %s, %t\n", n2, n2, n2, n2, n2)
fmt.Printf("%x, %b\n", n2, n2)
%!d(float64=1.2), %!o(float64=1.2), %!c(float64=1.2), %!s(float64=1.2), %!t(float64=1.2)
0x1.3333333333333p+00, 5404319552844595p-52

2.2. 실수 서식(format)

실수타입을 출력하는 서식문자로, %f(%F), %e(%E), %g(%G)가 있습니다.
이 서식문자들은 실수타입에만 적용가능합니다.

%f는 실수를 타입에 맞게 기본 출력하며, %e는 지수표기법으로 출력합니다.

%g는 값이 큰 실수값은 지수형태(%e)로, 값이 작은 실수값은 기본(%f) 출력합니다.

var n1 = 1234.56789

fmt.Printf("%%v(기본): %v\n", n1)
fmt.Printf("%%T(데이터타입): %T\n", n1)
fmt.Printf("%%f(실수): %f\n", n1)
fmt.Printf("%%e(지수표기법): %e\n", n1)
fmt.Printf("%%E(지수표기법): %E\n", n1)
fmt.Printf("%%f(실수 소수점 3자리까지): %.3f\n", n1)
%v(기본): 1234.56789
%T(데이터타입): float64
%f(실수): 1234.567890
%e(지수표기법): 1.234568e+03
%E(지수표기법): 1.234568E+03
%f(실수 소수점 3자리까지): 1234.568

실수의 경우, 서식을 설정하지 않을 경우 최소 소수점 자리수 로 표시됩니다.

var a float32 = 7.0  
fmt.Println(a)
7

2.3. bool 타입

var v1 = true
fmt.Printf("%%T(데이터타입): %T\n", v1)
fmt.Printf("%%t(boolean): %t\n", v1)
%T(데이터타입): bool
%t(boolean): true

2.4. string 타입

문자열을 출력하는 서식문자열은 2가지가 있습니다.
\t(탭), \n(개행)과같은 특수문자의 동작을 행하며 출력하는 %s와, 동작을 무시하고 그대로 출력하는 %q 가 있습니다.

var v2 = "hello\njiniworld\t!"
fmt.Printf("%%s(문자열): %s\n", v2)
fmt.Printf("%%q(문자열, 특수문자 기능 동작 무시): %q\n", v2)
%s(문자열): hello
jiniworld       !
%q(문자열, 특수문자 기능 동작 무시): "hello\njiniworld\t!"

2.5. 메모리 주소

var v3 = 123  
fmt.Printf("%%p(메모리 주소값) %p", &v3)
%p(메모리 주소값) 0x14000110020

728x90
반응형

'Go' 카테고리의 다른 글

[Go] 07. 배열, 구조체  (1) 2024.01.17
[Go] 06. if문, switch문, for문  (0) 2024.01.16
[Go] 05. 함수, 상수  (0) 2024.01.15
[Go] 03. fmt - 2. 표준입력  (0) 2024.01.14
[Go] 01. Go 시작하기  (0) 2023.12.28