> 백엔드 개발 > Golang > Go에서 Sprintf에 여러 변수 매개변수를 어떻게 전달할 수 있나요?

Go에서 Sprintf에 여러 변수 매개변수를 어떻게 전달할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-10-29 11:40:30
원래의
885명이 탐색했습니다.

How Can I Pass Multiple Variable Parameters to Sprintf in Go?

Go에서 Sprintf에 변수 매개변수 전달

Sprintf 함수에서 각 변수를 개별적으로 지정하는 지루한 작업을 피하려면 여러 매개변수를 단일 엔터티로 전달할 수 있는 기술입니다. 이 접근 방식은 질문에 설명된 것처럼 상당한 수의 매개변수가 필요한 시나리오를 다룹니다.

이 기술의 핵심은 슬라이스 v를 []문자열이 아닌 []인터페이스{}로 선언하는 것입니다. Sprintf 함수는 서명에 표시된 대로 인수가 []interface{} 유형일 것으로 예상합니다.

<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>
로그인 후 복사

v를 []interface{}로 변환하면 함수의 기대와 일치합니다.

<code class="go">s := []interface{}{"a", "b", "c", "d"}
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])

v := s[1:]
fmt.Printf("%5s %4s %3s\n", v...)</code>
로그인 후 복사

이 접근 방식은 "fmt.Printf 인수에서 v([]문자열 유형)를 []인터페이스 {} 유형으로 사용할 수 없습니다." 오류 없이 원하는 출력을 생성합니다.

[] 동안 인터페이스{} 및 []문자열은 변환할 수 없으므로 필요한 경우 []문자열을 []인터페이스{}로 수동으로 변환할 수 있습니다.

<code class="go">ss := []string{"a", "b", "c"}
is := make([]interface{}, len(ss))
for i, v := range ss {
    is[i] = v
}</code>
로그인 후 복사

이러한 기술을 따르면 개발자는 변수 매개변수를 쉽게 전달할 수 있습니다. Sprintf로 전환하여 코드를 더욱 효율적으로 만들고 개별 변수 지정과 관련된 상용구를 줄였습니다.

위 내용은 Go에서 Sprintf에 여러 변수 매개변수를 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿