
Go์ ํ์ ์ง์ ์(format verbs) ๋ fmt ํจํค์ง(fmt.Printf, fmt.Sprintf, fmt.Errorf ๋ฑ)์์ ๋ฌธ์์ด ์ถ๋ ฅ ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
์ด ๋ถ๋ถ์ ๋๋ฒ๊น
, ๋ก๊น
, ๋ฌธ์์ด ํฌ๋งคํ
๋ชจ๋์ ์ํฅ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ค๋ฌด์์๋ ์ ํํ ์ดํดํด๋๋ฉด ์ข์ต๋๋ค.
Go ํ์ ์ง์ ์ ์์ ์ ๋ฆฌ
fmt ํจํค์ง์ ์ฃผ์ ํจ์๋ค:
| ํจ์ | ์ค๋ช |
| fmt.Printf() | ์ฝ์์ ํ์ํ๋ ์ถ๋ ฅ |
| fmt.Sprintf() | ํ์ํ๋ ๋ฌธ์์ด ๋ฐํ |
| fmt.Fprintf() | writer(io.Writer)์ ํ์ํ๋ ์ถ๋ ฅ |
| fmt.Errorf() | ํ์ํ๋ ์๋ฌ ๋ฌธ์์ด ์์ฑ |
์ด ํจ์๋ค์ ๋ชจ๋ "%" ๋ก ์์ํ๋ format verb(ํ์ ์ง์ ์)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ ํ์ ์ง์ ์ (๊ธฐ๋ณธํ)
| ํ์ | ์ค๋ช | ์์ | ์ถ๋ ฅ |
| %v | ๊ธฐ๋ณธ ํ์์ผ๋ก ์ถ๋ ฅ | fmt.Printf("%v", 123) | 123 |
| %+v | ๊ตฌ์กฐ์ฒด ํ๋๋ช ํฌํจ ์ถ๋ ฅ | fmt.Printf("%+v", user) | {Name:Alice Age:30} |
| %#v | Go ์ฝ๋ ํํ๋ก ํํ | fmt.Printf("%#v", user) | main.User{Name:"Alice", Age:30} |
| %T | ๊ฐ์ ํ์ ์ถ๋ ฅ | fmt.Printf("%T", 123) | int |
| %% | % ๋ฌธ์ ์์ฒด ์ถ๋ ฅ | fmt.Printf("%%") | % |
์ ์ ํ์
| ํ์ | ์ค๋ช | ์์ | ์ถ๋ ฅ |
| %d | 10์ง์ | fmt.Printf("%d", 255) | 255 |
| %b | 2์ง์ | fmt.Printf("%b", 255) | 11111111 |
| %o | 8์ง์ | fmt.Printf("%o", 255) | 377 |
| %x | 16์ง์(์๋ฌธ์) | fmt.Printf("%x", 255) | ff |
| %X | 16์ง์(๋๋ฌธ์) | fmt.Printf("%X", 255) | FF |
| %c | Unicode ์ฝ๋ ํฌ์ธํธ๋ฅผ ๋ฌธ์๋ก ์ถ๋ ฅ | fmt.Printf("%c", 65) | A |
| %U | Unicode ํ์์ผ๋ก ์ถ๋ ฅ | fmt.Printf("%U", 65) | U+0041 |
๋ฌธ์์ด ๋ฐ ๋ฐ์ดํธ
| ํ์ | ์ค๋ช | ์์ | ์ถ๋ ฅ |
| %s | ๋ฌธ์์ด ๊ทธ๋๋ก ์ถ๋ ฅ | fmt.Printf("%s", "GoLang") | GoLang |
| %q | ๋ฐ์ดํ ํฌํจ ๋ฌธ์์ด | fmt.Printf("%q", "GoLang") | "GoLang" |
| %x | ๋ฐ์ดํธ ์ฌ๋ผ์ด์ค๋ฅผ 16์ง์๋ก ์ถ๋ ฅ | fmt.Printf("%x", "Go") | 476f |
| %X | ๋๋ฌธ์ 16์ง์ | fmt.Printf("%X", "Go") | 476F |
๋ถ๋์์์ (float, double)
| ํ์ | ์ค๋ช | ์์ | ์ถ๋ ฅ |
| %f | ๊ณ ์ ์์์ | fmt.Printf("%f", 3.14159) | 3.141590 |
| %.2f | ์์์ ๋์งธ ์๋ฆฌ๊น์ง | fmt.Printf("%.2f", 3.14159) | 3.14 |
| %e | ์ง์ํ(์๋ฌธ์ e) | fmt.Printf("%e", 3.14159) | 3.141590e+00 |
| %E | ์ง์ํ(๋๋ฌธ์ E) | fmt.Printf("%E", 3.14159) | 3.141590E+00 |
| %g | ์๋ํ์ (์งง์ ์ชฝ ์ ํ) | fmt.Printf("%g", 3.14159) | 3.14159 |
| %G | ์๋ํ์ (๋๋ฌธ์) | fmt.Printf("%G", 3.14159) | 3.14159 |
ํฌ์ธํฐ
fmt.Printf("%p", &x) // 0xc0000140a8
๋ณตํฉ ํ์
| ํ์ | ์์ | ์ถ๋ ฅ |
| []int{1,2,3} | %v | [1 2 3] |
| map[string]int{"a":1,"b":2} | %v | map[a:1 b:2] |
| struct{Name string} | %+v | {Name:Go} |
ํญ(width)๊ณผ ์ ๋ ฌ ์ต์
ํ์ ์ง์ ์ ์์ ํญ(width)๊ณผ ์ ๋ ฌ ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
| ์์ | ์ค๋ช | ์ถ๋ ฅ |
| %6d | ์ต์ ํญ 6์นธ ํ๋ณด | 123 |
| %-6d | ์ผ์ชฝ ์ ๋ ฌ | 123 |
| %06d | 0์ผ๋ก ์ฑ์ | 000123 |
| %10s | ๋ฌธ์์ด ์ค๋ฅธ์ชฝ ์ ๋ ฌ | " Go" |
์ฃผ์์ฌํญ
| ์ํฉ | ์ฃผ์์ |
| ํ์ ๋ถ์ผ์น | %d๋ก float์ด๋ string์ ์ถ๋ ฅํ๋ฉด panic ๋ฐ์ |
| ์ฌ์ฉํ์ง ์๋ import | fmt๋ฅผ importํ์ง๋ง ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋น๋ ์๋ฌ |
| %v vs %+v ํผ๋ | ๊ตฌ์กฐ์ฒด ๋ก๊น ์ %+v๋ฅผ ์จ์ผ ํ๋๋ช ํ์ |
| ์ค์ ํฌ๋งท | %f๋ ํญ์ 6์๋ฆฌ ์์์ ์ถ๋ ฅ (์๋ ์๋ฅด์ง ์์) |
| ์ฑ๋ฅ ๊ณ ๋ ค | ๊ณ ๋น๋ ๋ก๊น ์์๋ fmt.Sprintf๋ณด๋ค strconv.Itoa ๋ฑ ์ง์ ๋ณํ์ด ๋น ๋ฆ |
์์ฃผ ์ฐ์ด๋ ์กฐํฉ (์ค๋ฌด ์์)
log.Printf("Request: %+v", req) // ๊ตฌ์กฐ์ฒด ํ๋๋ช
ํฌํจ ์ถ๋ ฅ
log.Printf("Response: %#v", resp) // Go ์ฝ๋ ํํ๋ก ์ถ๋ ฅ
fmt.Printf("User ID: %d, Name: %s\n", id, name)
fmt.Printf("Latency: %.3fms\n", latency)
fmt.Printf("Pointer: %p\n", &user)
fmt.Printf("Type: %T, Value: %v\n", v, v)
์์ฝ
| ๋ฒ์ฃผ | ํ์ | ์ค๋ช |
| ์ผ๋ฐ | %v, %+v, %#v, %T, %% | ๊ธฐ๋ณธ, ํ๋๋ช ํฌํจ, Go๋ฌธ๋ฒ, ํ์ |
| ์ ์ | %d, %b, %o, %x, %X, %c, %U | ์ญ์ง, 2์ง, 8์ง, 16์ง, ๋ฌธ์ |
| ์ค์ | %f, %e, %E, %g, %G | ๊ณ ์ ์์, ์ง์, ์๋ |
| ๋ฌธ์์ด | %s, %q, %x, %X | ๋ฌธ์์ด, ์ธ์ฉ, hex |
| ํฌ์ธํฐ | %p | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ |
'ํ๋ก๊ทธ๋๋ฐ ์ธ์ด > Go' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Go] ์ค๋ฌด ํ๊ฒฝ์์ ๋ก๊ทธ ์ ๋๋ก ๋จ๊ธฐ๊ธฐ(Logging) (0) | 2025.11.10 |
|---|---|
| [Go] ์ผ์ ์๊ฐ๋ง๋ค ์ค์ผ์ค๋ฌ ๋์ํ๊ธฐ(Ticker) (0) | 2025.11.07 |
| [Go] Map ์๋ฆฌ์ ํ์ฉ(feat. hash) (0) | 2025.11.05 |
| [Go] ์ฌ๋ผ์ด์ค(slice)์๋ ํฌ์ธํฐ๊ฐ ์๋ค (0) | 2025.10.14 |
| [Go] ๊ณ ๋ฃจํด(Goroutine) (0) | 2025.10.13 |
๋๊ธ