가변 함수 래퍼에 효율적으로 추가
fmt.Println과 같은 Go의 가변 함수를 사용하면 가변 개수의 인수를 전달할 수 있습니다. . 그러나 디버깅 목적으로 래퍼 함수를 사용하는 경우 추가 인수를 추가하면 메모리 할당 문제가 발생할 수 있습니다.
제공된 예제에서 추가 인수를 사용하여 fmt.Fprintln 함수를 확장하려는 처음 두 시도에서는 오류가 발생합니다. 세 번째 방법은 새 슬라이스를 수동으로 구성하는 것이며 이로 인해 오버헤드가 발생합니다.
메모리 재할당을 방지하려면 추가 기능을 활용할 수 있습니다.
<code class="go">func Debug(a ...interface{}) { if debug { fmt.Fprintln(out, append([]interface{}{prefix, sep}, a...)...) } }</code>
이 한 줄짜리 방법은 기존 슬라이스를 가져옵니다. 인수(a)를 추가하고 추가 항목(접두사 및 sep)을 사용하여 확장합니다. 그런 다음 결과 슬라이스가 fmt.Fprintln에 전달되어 명시적인 메모리 할당 없이도 효율적인 인수 확장이 보장됩니다.
위 내용은 Go에서 가변 함수 래퍼에 인수를 효율적으로 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!