Go의 복사 기능 이해
문서에 나와 있듯이 Go의 복사 기능은 소스 슬라이스의 요소를 대상 슬라이스로 이동합니다. 동일한 요소 유형의 슬라이스에서 작동하며 소스와 대상이 겹치는 경우를 처리할 수 있습니다.
복사 작동 방식
복사 기능은 대상이라는 두 가지 매개변수를 사용합니다. 슬라이스 dst와 소스 슬라이스 src. 성공적으로 복사된 요소 수를 나타내는 정수를 반환합니다. 복사된 요소 수는 소스 및 대상 슬라이스의 최소 길이에 따라 결정됩니다.
예
몇 가지 예를 통해 복사 기능을 살펴보겠습니다.
<code class="go">src := []int{10, 11, 12, 13, 14} dst := []int{0, 1, 2, 3, 4} // Copy all elements from src to dst. n := copy(dst, src) fmt.Println(n, src, dst) // Output: 5 [10 11 12 13 14] [10 11 12 13 14]</code>
이 예에서는 src의 5개 요소가 모두 dst로 복사되어 두 슬라이스 모두 동일한 요소가 남습니다.
<code class="go">dst = []int{0, 1} // Copy only as many elements as the shorter of src and dst. n = copy(dst, src) fmt.Println(n, src, dst) // Output: 2 [10 11 12 13 14] [10 11]</code>
이 경우 dst에는 2개의 요소만 있으므로 두 요소가 복사되어 src의 처음 두 요소가 포함된 dst가 생성됩니다.
<code class="go">src = []int{10, 11} dst = []int{0, 1, 2, 3, 4} // Copy only as many elements as the shorter of src and dst. n = copy(dst, src) fmt.Println(n, src, dst) // Output: 2 [10 11] [10 11 2 3 4]</code>
마찬가지로 src의 요소가 dst보다 적은 경우 src에서 사용할 수 있는 요소만 복사되고 dst의 나머지 요소는 복사됩니다. 변경되지 않은 상태로 유지됩니다.
特殊案例:拷贝字符串到字节picture
值得注의료한是,copy()还可以将字符串中字节拷贝到字节文([]byte)中:
<code class="go">str := "Hello, World!" data := make([]byte, 5) // Copy 5 bytes from the UTF-8 representation of str into data. n = copy(data, str) fmt.Println(n, str, data) // Output: 5 Hello, World! [72 101 108 108 111]</code>
겹침
Copy는 원본 조각과 대상 조각이 겹치는 상황을 처리할 수 있습니다. 이러한 경우 겹치는 부분의 요소는 복사되며 대상 슬라이스의 요소 순서는 변경되지 않습니다.
결론
Go의 복사 기능 한 슬라이스에서 다른 슬라이스로 요소를 복사하는 편리한 방법을 제공합니다. 다양한 슬라이스 길이와 겹침이 있는 사례를 유연하게 처리할 수 있으므로 슬라이스의 데이터를 조작하는 데 유용한 도구가 됩니다.
위 내용은 Go\의 복사 기능은 겹치는 조각을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!