문서에도 불구하고 복사 기능의 작동에는 추가 설명이 필요할 수 있습니다.
복사 기능은 소스 슬라이스의 요소를 동일한 요소 유형의 대상 슬라이스로 전송합니다. 복사는 문자열에서 바이트 조각으로 바이트를 복사할 수 있다는 점에 유의하세요.
복사 함수의 서명은 다음과 같습니다.
<code class="go">func copy(dst, src []Type) int</code>
여기서:
copy 기본적으로 src에서 dst까지 요소를 최소 len(src) 및 len(dst) 요소까지 복사합니다. 이는 대상 슬라이스가 용량을 초과하지 않고 소스 슬라이스의 모든 요소를 수용할 수 있음을 보장한다는 의미입니다.
다음 코드를 고려하세요.
<code class="go">package main import "fmt" func main() { 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]
이 예에서는 전체 src 슬라이스가 dst 슬라이스에 복사되어 두 슬라이스 모두 동일한 요소를 갖게 됩니다.
복사 기능 겹치는 슬라이스에도 사용할 수 있습니다. 예:
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
출력:
n = 4 src = [1 2 3 4 4]
이 시나리오에서는 src의 첫 번째 요소가 복사에서 제외되고 나머지 4개 요소는 사실상 한 인덱스 왼쪽으로 이동됩니다. , 첫 번째 요소를 마지막 요소로 덮어씁니다.
앞서 언급했듯이 복사를 사용하면 문자열에서 바이트 슬라이스로 바이트를 복사할 수 있습니다. 예는 다음과 같습니다.
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data)</code>
출력:
n = 5 str = Hello, World! data = [72 101 108 108 111]
복사 기능은 문자열의 UTF-8 표현 중 처음 5바이트를 데이터 슬라이스에 복사합니다.
복사 기능은 슬라이스가 겹치는 메모리를 공유하는 경우에도 슬라이스 간에 요소를 전송하는 효율적인 방법을 제공합니다. 다재다능함 덕분에 Go 프로그래밍에서 귀중한 도구가 되었습니다.
위 내용은 Go에서 `copy()` 함수는 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!