>  기사  >  백엔드 개발  >  Go에서 문자열 조각을 사용하여 변수 매개변수를 Sprintf에 전달하는 방법은 무엇입니까?

Go에서 문자열 조각을 사용하여 변수 매개변수를 Sprintf에 전달하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-04 11:40:02818검색

How to Pass Variable Parameters to Sprintf in Go with a Slice of Strings?

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

많은 수의 매개변수로 작업할 때 수동으로 Sprintf에 전달하는 것은 지루할 수 있습니다. 다행히 이 프로세스를 단순화할 수 있는 방법이 있습니다.

문제:

문자열 조각([]string)을 Sprintf에 직접 전달하려고 하면 오류가 발생합니다. :

cannot use v (type []string) as type []interface {} in argument to fmt.Printf

해결책:

이 오류를 해결하려면 슬라이스를 []문자열 대신 []인터페이스{} 유형으로 선언하세요. Sprintf는 서명에 표시된 대로 인터페이스{} 매개변수 배열을 기대합니다.

func Printf(format string, a ...interface{}) (n int, err error)

예:

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...)

출력(Go Playground) :

b    c   d
b    c   d

참고:

[]interface{}와 []string은 서로 바꿔 사용할 수 없습니다. 기존 []문자열이 있는 경우 다음과 같이 수동으로 []인터페이스{}로 변환할 수 있습니다.

ss := []string{"a", "b", "c"}
is := make([]interface{}, len(ss))
for i, v := range ss {
    is[i] = v
}

위 내용은 Go에서 문자열 조각을 사용하여 변수 매개변수를 Sprintf에 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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