[Go 언어] 24. 콘솔 출력 함수 Println, Print, Printf 사용하기

안녕하세요. 언제나 휴일, 언휴예요.

이번 게시글에서는 콘솔에 문자를 출력할 때 사용하는 Println, Print, Printf 함수 사용하는 방법을 알아볼게요.

Println 함수는 가장 많이 사용하는 함수로 개행을 자동 추가하여 출력하는 함수이며 Print함수는 개행을 자동으로 추가하지 않습니다. 그리고 Printf 함수는 포멧 지정자를 이용하여 개발자가 원하는 형태로 출력하는 함수입니다.

새 프로젝트를 생성하여 Println 함수를 사용해 보아요.

[그림 1] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example Println
package main
 
import "fmt"
 
func main() {
    var nums []int = []int{1, 2, 3, 4, 5}
    fmt.Println("안녕하세요.")
    fmt.Println(23)
    fmt.Println(nums)
    fmt.Println("나이:", 23, "이름:", "홍길동")
}

Println 함수는 하나의 값을 인자로 전달하여 출력할 수 있습니다.

  • 인자 하나를 전달하여 출력
    var nums []int = []int{1, 2, 3, 4, 5}
    fmt.Println("안녕하세요.")
    fmt.Println(23)
    fmt.Println(nums)

출력 결과는 다음과 같아요.

안녕하세요.
23
[1 2 3 4 5]

그리고 여러 개의 인자를 콤마로 열거하여 출력할 수도 있습니다.

  • 여러 개의 인자를 출력하기
    fmt.Println("나이:", 23, "이름:", "홍길동")

출력 결과는 다음과 같습니다.

나이: 23 이름: 홍길동

Print 함수 사용 방법은 Println과 같습니다. 다만 자동으로 개행해 주지 않기 때문에 ‘\n’를 추가로 전달해야 개행합니다. 여기에서는 이에 관해 별도로 다루지 않을게요. 여러분께서는 한 번 사용해 보세요.

[그림 2] Println 함수 사용 예제 실행 화면

Printf 함수는 포멧을 지정하여 원하는 형태로 출력할 때 사용합니다.

%t  bool 
%b 2진수
%c 문자
%d 10진수
%o 8진수
%x 16진수, a~f
%X 16진수, A~F
%f  고정소수점
%F 고정소수점
%e 지수 표현, e
%E 지수 표현, E
%g 간단한 실수 표현
%G 간단한 실수 표현
%s 문자열
%p 포인터
%U 유니코드
%T 타입
%v 모든 형식
%#v 형식을 구분할 수 있게

원하는 출력 폭을 지정할 때 %3d처럼 지정할 수 있습니다.

만약 지정한 출력 폭에 빈 자리를 0으로 채워서 출력을 원하면 %03d처럼 지정할 수 있어요.

출력할 때 왼쪽 자리부터 출력을 배정할 때 %-3d처럼 지정할 수 있어요.

출력할 소수점 이하 자리를 지정할 때 %.4f 처럼 지정할 수 있습니다.

새 프로젝트를 생성하여 Printf 함수를 사용해 보아요.

[그림 3] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example Printf
package main
 
import "fmt"
 
func main() {
    fmt.Printf("2<3=%b\n", 2 < 3)          //bool
    fmt.Printf("23은 이진수로 %b\n", 23)        //이진수
    fmt.Printf("family name %c\n", '홍')    //문자
    fmt.Printf("10진수 출력:%d\n", 23)         //10진수
    fmt.Printf("8진수 출력:%o\n", 23)          //8진수
    fmt.Printf("16진수 출력:%x\n", 23)         //16진수,a~f
    fmt.Printf("16진수 출력:%X\n", 23)         //16진수,A~F
    fmt.Printf("고정소수점:%f\n", 123.4567)     //고정소수점
    fmt.Printf("고정소수점:%F\n", 123.4567)     //고정소수점
    fmt.Printf("지수 표현:%e\n", 123.4567)     //지수 표현, e
    fmt.Printf("지수 표현:%E\n", 123.4567)     //지수 표현, E
    fmt.Printf("간단한 실수 표현:%g\n", 123.4567) //간단한 실수 표현
    fmt.Printf("간단한 실수 표현:%g\n", 123.4567) //간단한 실수 표현
    fmt.Printf("문자열:%s", "홍길동\n")          //문자열
    var a int = 32
    fmt.Printf("메모리주소:%p\n", a)                     //포인터
    fmt.Printf("유니코드 %U\n", '\ud55c')               //유니코드
    fmt.Printf("%T\n", 23)                          //타입
    fmt.Printf("모든 형식:%v , %v\n", 23, 'a')          //모든 형식
    fmt.Printf("형식도 함께:%d %#o , %#x\n", 23, 23, 23) //%#v 형식을 구분할 수 있게
    fmt.Printf("%4d %04d\n", 23, 23)                //출력 폭 지정, 빈 곳 0출력
    fmt.Printf("%-4d %-4d\n", 23, 23)               //왼쪽 정렬
    fmt.Printf("%9.2f\n", 123.4567)                 //소수점 이하 자리 출력 지
}

출력 결과는 다음과 같습니다.

2<3=%!b(bool=true)
23은 이진수로 10111
family name 홍
10진수 출력:23
8진수 출력:27
16진수 출력:17
16진수 출력:17
고정소수점:123.456700
고정소수점:123.456700
지수 표현:1.234567e+02
지수 표현:1.234567E+02
간단한 실수 표현:123.4567
간단한 실수 표현:123.4567
문자열:홍길동
메모리주소:%!p(int=32)
유니코드 U+D55C
int
모든 형식:23 , 97
형식도 함께:23 027 , 0x17
23 0023
23 23
123.46