[Go] ν˜•μ‹μ§€μ •μž Format 정리(%v,%s,%d λ“±)

2025. 11. 7. 15:46Β·ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Go

 


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
'ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Go' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Go] 싀무 ν™˜κ²½μ—μ„œ 둜그 μ œλŒ€λ‘œ 남기기(Logging)
  • [Go] 일정 μ‹œκ°„λ§ˆλ‹€ μŠ€μΌ€μ€„λŸ¬ λ™μž‘ν•˜κΈ°(Ticker)
  • [Go] Map 원리와 ν™œμš©(feat. hash)
  • [Go] 슬라이슀(slice)μ—λŠ” 포인터가 μžˆλ‹€
μ„œμ•„λž‘πŸ˜ƒ
μ„œμ•„λž‘πŸ˜ƒ
Just Do ItπŸ’ͺ
  • μ„œμ•„λž‘πŸ˜ƒ
    G-Stack
    μ„œμ•„λž‘πŸ˜ƒ
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (144)
      • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (78)
        • C++ 기초 (28)
        • C++ μ‘μš© (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • 컴퓨터 ꡬ쑰 & 운영체제 (31)
      • μ•Œκ³ λ¦¬μ¦˜ (12)
      • λ°μ΄ν„°λ² μ΄μŠ€ (5)
      • λ„€νŠΈμ›Œν¬ (3)
      • λ””μžμΈνŒ¨ν„΄ (5)
      • μ„œλΉ„μŠ€ & 툴 (7)
      • νŠΈλ Œλ“œ&이슈 (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

    • GμŠ€νƒμ˜ 기술 λΈ”λ‘œκ·Έ
  • 인기 κΈ€

  • νƒœκ·Έ

    포인터
    λ””μžμΈνŒ¨ν„΄
    νŒŒμΌμž…μΆœλ ₯
    반볡문
    cpu
    component
    μŠ€νƒ
    go
    상속
    λ³€μˆ˜
    쑰건문
    μ•Œκ³ λ¦¬μ¦˜
    컴퓨터
    init
    ν•¨μˆ˜
    c++
    c
    λ°°μ—΄
    pointer
    λ°μ΄ν„°λ² μ΄μŠ€
    RAM
    STD
    ν•˜λ“œλ””μŠ€ν¬
    파이썬
    fork
    μž¬κ·€
    Thread
    λ©”λͺ¨λ¦¬
    가상메λͺ¨λ¦¬
    νŒ¨ν‚€μ§€
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
μ„œμ•„λž‘πŸ˜ƒ
[Go] ν˜•μ‹μ§€μ •μž Format 정리(%v,%s,%d λ“±)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”