프로그래밍 일반/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를 사용하면 됩니다.