『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 5강 fmt 패키지를 이용한 텍스트 입출력
2021. 5. 16. 20:38ㆍ개발/Golang
728x90
반응형
모든건 프로그램과 사용자는 입출력을 통해 상호작용을 합니다.
입력은 보통 키보드로 입력을 받고 출력은 대략 화면을 예로 들 수 있다고 봅니다. GO는 fmt라는 패키지가 입출력을 기본으로 담당하는데 이번시간엔 fmt를 통한 패키지를 요약 해보고자 합니다.
1-1 fmt 패키지
import "fmt"
패키지를 사용하려면 import를 통해 사용할 패키지를 불러와야 합니다.
| Print() | 함수 입력값들을 출력합니다. |
| Println() | 함수 입력값들을 출력하고 개행합니다 |
| Printf() | 서식(format)에 맞도록 입력값들을 출력합니다. |
package main
import "fmt"
func main() {
var a int = 10
var b int = 20
var f float64 = 32799438743.8297
fmt.Print("a:", a, "b:",b)
fmt.Println("a:", a,"b:",b, "f:", f)
fmt.Printf("a: %d b: %d f: %f\n", a, b, f)
}

- Printf()는 기본서식에 맞춰 출력하며, 개행을 하지 않습니다.-> a:10b:20
- Println()는 a: 10 b:20 f: 3.27994387438297e+10 출력하고 개행을 하였습니다.
- Printf()는 사용자 서식에 맞추어 입력값을 출력합니다. %d, %f, \n은 출력서식을 의미합니다.
1-2. 서식문자
Printf(서식문자열 , 인수1, 인수2, ...)
| %v | 데이터 타입에 맞춰서 기본형태로 출력 |
| %T | 데이터 타입 출력 |
| %t | 불리언 true/false로 출력 |
| %d | 10진수 정수값으로 출력 |
| %b | 2진수로 출력 |
| %c | 유니코드 문자로 출력 |
| %o | 8진수로 출력 |
| %O | 앞에 8진수 임을 표시하는 Oo를 붙여서 8진수 값으로 출력 |
| %x | 16진수 값을 출력합니다 10이상 값을 a-f소문자로 표시 |
| %X | 16진수 값을 출력합니다 10이상 값을 A-F대문자로 표시 |
| %e, %E | 지수 형태로 실숫값을 출력합니다. (실수 타입만 가능) ex) -1.23456e+78 |
| %f, %F | 지수 형태가아닌 실숫값그대로 출력합니다. (실수타입만가능) ex) 123.456 |
| %g, %G | 값이 큰 실숫값은 지수 형태(%e)로 출력하고, 작은 실숫값은 그대로(%f) 출력 |
| %s | 문자열을 출력합니다. |
| %q | 특수문자기능을 동작하지 않고 문자열 그대로 출력 |
| %p | 메모리 주소값을 출력합니다. |
※ 자주 사용되는 서식은 표시 해두었습니다. 어떤 서식을 써야할진 모를때 마법의 서식 %v를 사용!
1-3. 최소 출력 너비 지정
서식 문자를 이용해 출력 너비를 지정하고, 숫자 0으로 빈 칸을 채우고, 왼쪽 정렬을 할 수 있습니다.
package main
import "fmt"
func main() {
var a = 123
var b = 456
var c = 123456789
fmt.Printf("%5d, %5d\n", a, b) // 1) 최소 너비보다 짧은 값 너비
fmt.Printf("%05d, %05d\n", a ,b) // 2) 최소 너비보다 짧은 값 0 채우기
fmt.Printf("%-5d,%-05d\n", a, b) // 3) 최소 너비보다 짧은 값 왼쪽 정렬
fmt.Printf("%5d, %5d\n", c,c) // 4) 최소 너비보다 긴 값 너비 지정
fmt.Printf("%05d, %05d\n",c,c) // 5) 최소 너비보다 긴 값 0 채우기
fmt.Printf("%-5d,%-05d\n",c,c) // 6) 최소 너비보다 긴 값 왼쪽 정렬
}

1) 최소 너비를 5로 지정 하였습니다. a(123) 와 b(456)은 3칸을 차지해서 최소 너비 5보다 짧기에 공백 2칸이 추가 됨
2) 최소 너비보다 짧은 수의 공란을 0으로 채웠음. 의도한대로 00123,00456으로 출력
3) 왼쪽으로 정렬하여 출력하고, 너비가 5이므로 공란 2칸이 추가되어 "123 "으로 출력되었습니다. b는 "45600"으로 출력되지 않고 "456 "으로 출력됬습니다. 00이 붙어버리면 값이 달라지기 때문입니다.
4)5)6) 최소 너비보다 긴값은 최소너비를 무시하고 출력됩니다.
1-4. 실수 소수점 이하 자릿수
- %f : 실수를 출력합니다. 예를 들어 %5.2f 는 최소 너비 5칸에 소수점 이하 값 2개를 출력합니다.
- %g : 실수를 정수부와 소수점 이하 숫자를 포함해 출력 숫자를 제한합니다.
package main
import "fmt"
func main() {
var a = 324.13455
var c = 3.14
fmt.Printf("%08.2f\n",a) // 최소너비 8, 소숫점 이하 2자리, 0을 채움
fmt.Printf("%08.2g\n",a) // 최소너비 8, 총숫자 2자리, 0을 채움
fmt.Printf("%8.5g\n",a) // 최소너비 8, 총숫자 5자리
fmt.Printf("%f\n",c) // 소수점 이하 6자리까지 출력 ( %f는 default 값이 6자리임)
}

1-5. 특수 문자
| \n | 줄바꿈을 합니다. ( 개행 Enter기능) |
| \t | 탭을 삽입합니다. |
| \\ | \를 자체 출력합니다. |
| \" | "를 출력합니다. 큰따옴표로 묶인 문자열 내부에서 따옴표를 넣을때 사용합니다. |
package main
import "fmt"
func main() {
str := "Hello\tGO\tWorld\n\"Go\"is Awesome!\n" // 문자열
fmt.Print(str) // 문자열 기본 서식으로 출력
fmt.Printf("%s",str) // 문자열을 %s으로 출력
fmt.Printf("%q",str) // 문자열을 %q서식으로 출력
}

표준입력을 도와주는 Scan함수가있는데 요건.. 책을 사서 보시면 더좋을거 같습니다... 요약이 생각보다 어렵네요^^;;;
728x90
반응형
'개발 > Golang' 카테고리의 다른 글
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 8강 상수 (0) | 2021.05.23 |
|---|---|
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 7강 함수 (0) | 2021.05.22 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 6강 연산자 (2) (0) | 2021.05.21 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 6강 연산자 (1) (0) | 2021.05.16 |
| 『Tucker의 Go 언어 프로그래밍』 스터디 요약 노트 : 4강 변수 (0) | 2021.05.08 |