> 백엔드 개발 > Golang > Go에서 지도를 어떻게 딥카피할 수 있나요?

Go에서 지도를 어떻게 딥카피할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-26 16:15:11
원래의
979명이 탐색했습니다.

How Can I Deep Copy Maps in Go?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿