Go에서 지도 심층 복사
질문: Go에 임의 지도의 전체 사본을 생성하기 위한 내장 함수나 라이브러리가 있습니까?
답변: Go는 지도 복사를 위한 전용 내장 기능을 제공하지 않지만 인코딩/gob 패키지를 이 목적으로 활용할 수 있습니다.
인코딩 및 디코딩 접근 방식
Encoding/gob은 인코딩과 디코드라는 두 가지 기능을 제공하며 이를 활용하여 전체 복사를 수행할 수 있습니다. 지도의. Encode 함수는 맵을 버퍼로 인코딩하고 Decode 함수는 버퍼에서 맵을 재구성합니다.
예:
package main import ( "bytes" "encoding/gob" "fmt" "log" ) func main() { ori := map[string]int{ "key": 3, "clef": 5, } var mod bytes.Buffer enc := gob.NewEncoder(&mod) dec := gob.NewDecoder(&mod) fmt.Println("ori:", ori) // key:3 clef:5 err := enc.Encode(ori) if err != nil { log.Fatal("encode error:", err) } var cpy map[string]int err = dec.Decode(&cpy) if err != nil { log.Fatal("decode error:", err) } fmt.Println("cpy:", cpy) // key:3 clef:5 cpy["key"] = 2 fmt.Println("cpy:", cpy) // key:2 clef:5 fmt.Println("ori:", ori) // key:3 clef:5 }
이 예에서는 원본 맵인 ori를 인코딩합니다. 버퍼 모드로. 그런 다음 버퍼를 새로운 맵인 cpy로 디코딩합니다. 복사 맵과 원본 맵은 이제 독립적이며 하나에 대한 변경 사항이 다른 맵에 영향을 주지 않습니다.
인코딩/Gob의 이점
인코딩/gob 제안 사용 맵 조각이 포함된 구조체 조각을 포함하여 복잡한 데이터 구조로 작업할 때 이점이 있습니다. 수동으로 구현할 필요 없이 전체 복사를 수행할 수 있는 간단한 방법을 제공합니다.
추가 리소스
인코딩/gob에 대해 자세히 알아보려면 공식 Go 블로그를 참조하세요. 게시물:
[https://blog.golang.org/gobs](https://blog.golang.org/gobs)
위 내용은 Go에서 지도를 어떻게 딥카피할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!