>백엔드 개발 >Golang >fmt.Sprintf에서 예기치 않은 필드를 처리하는 방법은 무엇입니까?

fmt.Sprintf에서 예기치 않은 필드를 처리하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 19:05:02544검색

How to Handle Unexpected Fields in fmt.Sprintf?

fmt.Sprintf에서 예기치 않은 필드 처리

Go 프로그래밍에서 fmt.Sprintf 함수는 문자열 형식을 지정하는 데 사용됩니다. 그러나 입력 문자열에 예상치 못한 필드가 포함되어 패닉이 발생하면 문제가 발생합니다.

문제

다음 코드 조각을 고려해 보겠습니다.

<code class="go">package main

import "fmt"

func main() {
    tmp_str := "hello %s"
    str := fmt.Sprintf(tmp_str, "world")
    fmt.Println(str)
}</code>

이 예에서는 , tmp_str은 단일 인수를 기대하는 템플릿 문자열입니다. 그러나 프로그램이 (템플릿 대신) "Hello Friends"와 같은 완전한 문자열을 수신하면 fmt.Sprintf는 추가 인수로 인해 패닉 상태가 됩니다. 오류 메시지는 다음과 같습니다.

Hello Friends%!(EXTRA string=world)

해결 방법

이 문제를 처리하는 한 가지 접근 방식은 템플릿 문자열에 유효한 %s 동사를 사용하도록 강제하는 것입니다. 사용자는 %.0s 또는 %.s와 같은 자리 표시자 동사를 제공하여 일치하는 필드가 없는 경우 인수가 0 길이로 잘릴 것임을 나타낼 수 있습니다. 예는 다음과 같습니다.

<code class="go">tmp_str := "Hello Friends%.s"</code>

%.s를 사용하면 추가 필드가 잘려 원하는 결과가 나옵니다.

Hello Friends

위 내용은 fmt.Sprintf에서 예기치 않은 필드를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.