콘솔 출력 함수 (Print)
- fmt 패키지를 사용
- 출력 함수
Println
, Print
, Printf
- 파일 출력 함수
Fprintln
, Fprint
, Fprintf
Fprint
는 지정된 파일에 포맷되지 않은 데이터를 씁니다.
Fprintf
는 지정된 파일에 포맷된 데이터를 씁니다.
Fprintln
은 지정된 파일에 포맷되지 않은 데이터를 쓰고 줄 바꿈 문자를 추가합니다.
string
형으로 반환 Sprintln
, Sprint
, Sprintf
Sprint
는 포맷되지 않은 데이터를 문자열로 반환합니다.
Sprintf
는 포맷된 데이터를 문자열로 반환합니다.
Sprintln
은 포맷되지 않은 데이터를 문자열로 반환하고 줄 바꿈 문자를 추가합니다.
- 자세한 F, S 함수는 추후에 좀 더 공부하기로!!
import "fmt"
- import "fmt"를 선언함으로써 fmt 패키지를 사용할 수 있다. 이는 C언어의 입/출력 함수인
printf
, scanf
함수같은 유사한 함수들을 형식화한 입/출력 함수를 사용할 수 있다는 뜻!
- 쉽게 말해, 콘솔 입력 함수와 콘솔 출력 함수를 사용하기 위해서는 fmt패키지를 import 해야한다는 것!
Println
과 Print
는 하나의 인자를 출력할 수 도 있고 여러 개의 인자를 콤마로 결합해 열거할 수 있다는 공통점이 있다.
Println
Print
- 개행을 하지 않는다! 문나열 (이중인용부호
" "
혹은 Back Quote)내에서 이스케이프 시퀀스인\n
을 입력해 개행!
코드
package main
import "fmt"
func main() {
fmt.Println("안녕 난 훈이야")
fmt.Println("나이는 와우")
fmt.Println("반가워")
n := 14
var arr [5]int = [5]int{1, 2, 3, 4, 5} //구문은 길이가 5이고 값이 1, 2, 3, 4, 5인 정수 배열을 선
fmt.Print("내 동생은", n, "살이야")
fmt.Print(arr)
fmt.Print(n, arr)
}
출력
안녕 난 훈이야
나이는 와우
반가워
내 동생은14살이야[1 2 3 4 5]14 [1 2 3 4 5]
코드
package main
import "fmt"
func main() {
fmt.Print("안녕 난 훈이야")
fmt.Print("오늘은 크로와상을 먹을거야\n") //개행을 위해 \n를 입력한다.
fmt.Print("반가워")
n := 14
var arr [5]int = [5]int{1, 2, 3, 4, 5}
fmt.Print("먹을 크로와상은", n, "개야")
fmt.Print(arr)
fmt.Print(n, arr)
}
출력
안녕 난 훈이야오늘은 크로와상을 먹을거야
반가워먹을 크로와상은14개야[1 2 3 4 5]14 [1 2 3 4 5]
Printf
- 개발자가 포멧을 지정하여 원하는 형태로 출력할 때 사용!
- 반드시 포멧을 지정해줘야 한다!!
- 예를 들어
a:=5
일 때, fmt.Printf(a)
출력 불가능!
fmt.Printf("%d", a)
출력 가능!
- C언어에서는
int arr[3] = {1, 2, 3}
일 때 printf("%d", arr)
이 불가능
- Go언어에서는
var arr [3]int = [5]int{1, 2, 3}
일 때 fmt.Printf("%d", arr)
이 가능
코드
package main
>
import "fmt"
>
func main() {
age, name := 24, "길동"
>
fmt.Printf("안녕 난 %s이야\n", name)
fmt.Printf("나이는 %d살이야\n", age)
fmt.Printf("반가워")
>
n := 14
var arr [5]int = [5]int{1, 2, 3, 4, 5}
>
fmt.Printf("내 동생은 %d살이야\n", n)
fmt.Printf("%d \n", arr) //배열 한 번에 출력 가능
fmt.Printf("%d %d", n, arr)
}
출력
안녕 난 훈이야
나이는 12345살이야
반가워내 동생은 1234살이야
[1 2 3 4 5]
1234 [1 2 3 4 5]
서식문자의 종류와 그 의미
Printf
함수를 사용하면서 포멧을 지정해줄 때 %d
와 같은 문자를 사용!
- 이는 값을 읿력하고 출력하는 데 있어서 서식을 지정하는 것이다.!
- 앞에서 몰라서 한번 찾아봤는데 여기서도 다시한번 정리하고자 한다.
%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
: #을 이용해구분 할 수 있는 형식 표현
- C언어에서는
%u
와 %x
등과 같은 부호의 여부에 따라 표현이 다른 서식문자들이 있다.
- Go언어에서는
%v
문자를 이용해 변수 타입에 관계없이 출력할 수 있다.
- 위에 정리되어 있는것은 정수는 정수타입으로, 실수는 실수 타입으로 출력할 수 있다는 것.
- 포인터 서식문자인
%p
는 값이 참조하는 주소값을 반환하는 서식문자.
- 출력하는 형태를 따로 지정할 수 있다.
- 원하는 출력 폭을 지정할 떄는
%(폭)d
형식으로 입력, 지정한 출력 폭에 0을 채워넣고 싶으면 "%0(폭)d"
형식으로 입력, 출력할 때 왼쪽부터 출력을 원한다면 "%-(폭)d"
형식으로 입력
- 출력할 소수점 이하 자리를 지정할 떄
"%.(자릿수)f"
형식으로 지정
코드
package main
import "fmt"
func main() {
fmt.Printf("5>6 = %t \n", 5 > 6)
fmt.Printf("15는 2진수로 %b\n", 15)
fmt.Printf("저의 성은 %c 입니다\n", '김')
fmt.Printf("19는 10진수로 %d입니다.\n", 19)
fmt.Printf("19는 8진수로 %o입니다.\n", 19)
fmt.Printf("19는 16진수로 %x입니다.\n", 19)
fmt.Printf("19는 16진수로 %X입니다.\n", 19)
fmt.Printf("19.1234는 고정 소수점으로 %f입니다.\n", 19.1234)
fmt.Printf("19.1234는 고정 소수점으로 %F입니다.\n", 19.1234)
fmt.Printf("19.1234의 지수 표현은 %e입니다.\n", 19.1234)
fmt.Printf("19.1234의 지수 표현은 %E입니다.\n", 19.1234)
fmt.Printf("19.1234의 간단한 실수 표현은 %g입니다.\n", 19.1234) // 고정 소수점이 아님
fmt.Printf("19.1234의 간단한 실수 표현은 %G입니다.\n", 19.1234) // 고정 소수점이 아님
fmt.Printf("문자열: %s\n", "안녕하세요.")
var num int = 50
fmt.Printf("num은 %d입니다.\n", num)
fmt.Printf("num의 메모리 주소 출력: %p\n", &num) //주솟값을 참조하기 위해 &를 쓴다.
fmt.Printf("num의 유니코드 값은 %U입니다.\n", num)
fmt.Printf("num의 타입은 %T입니다.\n", num)
fmt.Printf("num의 타입은 %T입니다.\n", num)
fmt.Printf("모든 형식으로 출력: %v, %v\n", 54.234, "Hello")
fmt.Printf("num의 타입은 %T입니다.\n", num)
fmt.Printf("7이 어떤 형식인지 표시: %d, %#o, %#x\n", 7, 7, 7) //8진수는 앞에 0이 붙고, 16진수는 0x가 붙습니다.
fmt.Printf("네 칸 차지하는 13: %4d\n", 13)
fmt.Printf("빈칸은 0으로 채우고 4칸 차지하는 13: %04d\n", 13)
fmt.Printf("총 네 칸 차지하고 왼쪽으로 정렬되는 13과 15: %-4d%-4d\n", 13, 15)
fmt.Printf("12.1234를 소수점 둘째 자리까지만 표시하면 %.2f입니다.\n", 12.1234)
}
출력
5>6 = false
15는 2진수로 1111
저의 성은 김 입니다
19는 10진수로 19입니다.
19는 8진수로 23입니다.
19는 16진수로 13입니다.
19는 16진수로 13입니다.
19.1234는 고정 소수점으로 19.123400입니다.
19.1234는 고정 소수점으로 19.123400입니다.
19.1234의 지수 표현은 1.912340e+01입니다.
19.1234의 지수 표현은 1.912340E+01입니다.
19.1234의 간단한 실수 표현은 19.1234입니다.
19.1234의 간단한 실수 표현은 19.1234입니다.
문자열: 안녕하세요.
num은 50입니다.
num의 메모리 주소 출력: 0xc000122090
num의 유니코드 값은 U+0032입니다.
num의 타입은 int입니다.
num의 타입은 int입니다.
모든 형식으로 출력: 54.234, Hello
num의 타입은 int입니다.
7이 어떤 형식인지 표시: 7, 07, 0x7
네 칸 차지하는 13: 13
빈칸은 0으로 채우고 4칸 차지하는 13: 0013
총 네 칸 차지하고 왼쪽으로 정렬되는 13과 15: 13 15
12.1234를 소수점 둘째 자리까지만 표시하면 12.12입니다.