Go 프로그래밍 언어는 한 슬라이스에서 다른 슬라이스로 요소를 쉽게 복사할 수 있는 내장 복사 기능을 제공합니다. 문서에 따르면 복사는 소스 슬라이스의 요소를 대상 슬라이스로 복사하여 작동합니다. 특히 대상이 바이트 조각인 경우 소스는 문자열일 수 있습니다.
복사 함수의 서명은 다음과 같습니다.
<code class="go">func copy(dst, src []Type) int</code>
여기서 dst와 src는 각각 대상 슬라이스와 소스 슬라이스를 나타냅니다. 반환 값은 복사된 요소 수를 나타내는 정수입니다. 이는 두 슬라이스 길이의 최소값입니다.
복사가 어떻게 작동하는지 설명하려면 다음 예를 고려하세요.
<code class="go">src := []int{10, 11, 12, 13, 14} dst := []int{0, 1, 2, 3, 4} n := copy(dst, src) fmt.Println("n =", n, "src =", src, "dst =", dst)</code>
출력:
n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
이 예에서는 소스 슬라이스의 5개 요소가 모두 대상 슬라이스에 복사되어 대상 슬라이스가 소스 슬라이스와 동일한 요소를 갖게 되었습니다. .
복사의 흥미로운 기능은 겹치는 슬라이스를 처리할 수 있다는 것입니다. 겹치는 것은 대상 및 소스 슬라이스가 동일한 기본 배열을 공유하는 시나리오를 나타냅니다. 이러한 경우에도 다음 예에 표시된 대로 복사 기능이 올바르게 작동합니다.
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
출력:
n = 4 src = [1 2 3 4 4]
이 예에서는 src[1:]가 소스로 사용됩니다. , 첫 번째 요소는 제외됩니다. 소스에 4개의 요소가 있으므로 4개의 요소가 복사되어 요소가 하나의 인덱스만큼 이동되었습니다.
복사 기능을 사용하면 문자열에서 다음으로 바이트를 복사할 수도 있습니다. 바이트 조각. 다음 코드는 이를 보여줍니다.
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data) fmt.Printf("data as string: %s\n", data)</code>
출력:
n = 5 str = Hello, World! data = [72 101 108 108 111] data as string: Hello
복사 기능은 Go에서 슬라이스 간에 요소를 복사하는 데 유용한 도구입니다. 일반 슬라이스와 겹치는 슬라이스를 모두 처리하고 문자열에서 바이트 슬라이스로 바이트를 복사하는 것도 허용합니다. Go 프로그램에서 효과적인 슬라이스 조작을 위해서는 함수의 동작을 이해하는 것이 필수적입니다.
위 내용은 Go '복사' 기능은 겹치는 조각에서 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!