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 중국어 웹사이트의 기타 관련 기사를 참조하세요!