프로그래밍 일반/Go 프로그래밍

[go] %v와 %+v의 차이

지노윈 2024. 11. 8. 10:43
반응형

 

%v와 %+v는 Go의 fmt 패키지에서 포맷팅 지시자로 사용되며, 주로 fmt.Printf 등의 함수와 함께 사용됩니다. 

이 두 지시자는 데이터를 문자열로 변환할 때 어떻게 표현할지를 결정합니다.

 

%v (Verb):
기본 포맷 : 값을 기본 포맷으로 출력합니다.
사용하는 예: fmt.Printf("%v", someValue)
구조체를 출력할 경우 필드 이름 없이 값만 출력합니다.

 

%+v (Detailed Verb):
상세 포맷 : 값을 포함하여 추가 정보를 출력합니다.
사용하는 예: fmt.Printf("%+v", someValue)
특히 구조체를 출력할 때 유용하며, 필드 이름과 값을 모두 출력합니다.

 

다음은 구조체를 예로 들었을 때의 차이점을 보여주는 예시입니다:

package main

import (
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	user := User{Name: "Alice", Age: 30}

	// %v는 기본 포맷으로 출력
	fmt.Printf("%v\n", user)  // Output: {Alice 30}

	// %+v는 필드 이름과 함께 출력
	fmt.Printf("%+v\n", user) // Output: {Name:Alice Age:30}
}

 

  • %v를 사용하면 구조체 필드의 값만을 출력합니다.
  • %+v를 사용하면 구조체 필드의 이름과 값이 함께 출력됩니다.

따라서, 디버깅 목적으로 필드 이름과 값을 모두 확인해야 할 때는 %+v를 사용하는 것이 유용합니다. 반면, 값만 간단히 출력하고 싶을 때는 %v를 사용하면 됩니다.