> 백엔드 개발 > Golang > golang 지도 수정 키

golang 지도 수정 키

WBOY
풀어 주다: 2023-05-15 09:17:07
원래의
1390명이 탐색했습니다.

Golang에서 Map은 매우 일반적으로 사용되는 데이터 구조로, 이를 통해 키-값 쌍의 형태로 데이터를 저장하고 액세스할 수 있습니다. 그러나 때로는 맵의 키를 수정해야 하는 경우가 있는데 이는 비교적 일반적인 작업입니다. 그러나 Go 언어에서 Map의 Key는 불변형(immutable type)입니다. 즉, Key의 값은 수정될 수 없습니다. 그렇다면 Map의 Key를 수정하는 방법은 무엇입니까? 이 글에서는 Golang Map의 Key를 수정하는 세 가지 방법을 소개합니다.

방법 1: 기존 키를 먼저 삭제한 후 새 키를 추가하세요

먼저 기존 키를 먼저 삭제한 다음 지도에 새 키를 추가할 수 있습니다. 이 방법은 비교적 간단하고 구현하기 쉽지만 Map을 두 번 조작해야 하므로 다소 번거롭습니다.

샘플 코드는 다음과 같습니다.

// 创建一个 Map 变量
m := map[string]int{
    "apple":  1,
    "banana": 2,
}

// 删除旧的 Key,并添加一个新的 Key
delete(m, "apple")
m["orange"] = 3

// 输出 Map
fmt.Println(m)
로그인 후 복사

위 코드에서는 먼저 Map 변수를 생성하고 여기에 각각 1과 2에 해당하는 apple과 바나나라는 두 개의 키를 할당합니다. 그런 다음 delete() 함수를 통해 원래 Key: apple을 삭제했습니다. 다음으로 지도에 새 키(주황색)를 다시 추가하고 값 3을 할당합니다. 마지막으로 fmt.Println()을 통해 이 지도를 출력합니다. delete() 函数将原有的 Key:apple 给删除了。接着,我们再次向 Map 中添加一个新的 Key:orange,并给它赋一个值 3。最后,我们通过 fmt.Println() 来输出这个 Map。

执行上述代码,将得到如下输出结果:

map[banana:2 orange:3]
로그인 후 복사

可以看到,原有的 Key:apple 已经被删除,在 Map 中只留下 banana 和 orange 两个 Key,且 Key:orange 代替了原有的 Key:apple。

当然,这种方法也存在一些限制。如果 Map 中不存在要删除的 Key,则该方法不能实现修改 Key 的目的。

方法二:用新的 Key 覆盖旧的 Key 的值

第二种方法比较直接,我们可以用一个新的 Key 来覆盖旧的 Key 的值。这种方法不需要对 Map 进行多次操作,相对来说比较简单,但是也存在一些限制。

示例代码如下:

// 创建一个 Map 变量
m := map[string]int{
    "apple":  1,
    "banana": 2,
}

// 用新的 Key 覆盖旧的 Key 的值
m["apple"] = 3

// 输出 Map
fmt.Println(m)
로그인 후 복사

上述代码中,我们首先创建了一个 Map 变量,并赋值给它两个 Key:apple 和 banana,分别对应着 1 和 2。然后,我们直接用一个新的 Key:apple 来覆盖旧的 Key 的值,即将 Key:apple 的值从 1 修改为 3。最后,我们通过 fmt.Println() 来输出这个 Map。

执行上述代码,将得到如下输出结果:

map[apple:3 banana:2]
로그인 후 복사

可以看到,我们成功修改了 Key:apple 的值。

当然,这种方法也有其限制。如果 Map 中不存在要修改的 Key,则该方法不能实现修改 Key 的目的。

方法三:使用第三方库

除了上述两种方法,我们还可以使用一些第三方库来修改 Golang Map 的 Key。例如,可以使用 gouuid 库中的 UUID() 函数生成一个新的 Key,并将其赋值给原有的 Key。这种方法非常简单,但是需要我们引入第三方库。

下面是示例代码:

import (
    "github.com/satori/go.uuid"
)

// 创建一个 Map 变量
m := map[string]int{
    "apple":  1,
    "banana": 2,
}

// 使用第三方库生成新的 Key,替代旧的 Key
newKey := uuid.NewV4().String()
m[newKey] = m["apple"]
delete(m, "apple")

// 输出 Map
fmt.Println(m)
로그인 후 복사

上述代码中,我们首先引入了 gouuid 库,用来生成一个新的 Key。然后,我们创建了一个 Map 变量,并赋值给它两个 Key:apple 和 banana,分别对应着 1 和 2。接着,我们使用 UUID() 函数生成了一个新的 Key,并将其赋值给原有的 Key:apple,即将 Key:apple 替换为新的 Key。最后,我们通过 delete() 函数将旧的 Key:apple 删除。最终,我们通过 fmt.Println() 来输出这个 Map。

执行上述代码,将得到如下输出结果:

map[4a5e45b7-465b-4b4c-88f1-6d6b3b0ee022:1 banana:2]
로그인 후 복사

可以看到,我们使用 UUID()

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

rrreee

원래 Key: apple이 삭제되어 맵에 바나나와 오렌지만 남고 Key: orange가 원래 Key: apple을 대체하는 것을 볼 수 있습니다.

물론 이 방법에는 몇 가지 제한 사항이 있습니다. 삭제하려는 Key가 Map에 존재하지 않는 경우, 이 방법은 Key 수정 목적을 달성할 수 없습니다. 🎜🎜방법 2: 이전 키 값을 새 키로 덮어쓰기🎜🎜두 번째 방법은 더 간단합니다. 새 키를 사용하여 이전 키 값을 덮어쓸 수 있습니다. 이 방법은 지도에서 여러 작업이 필요하지 않고 비교적 간단하지만 몇 가지 제한 사항도 있습니다. 🎜🎜샘플 코드는 다음과 같습니다. 🎜rrreee🎜위 코드에서는 먼저 Map 변수를 생성하고 여기에 각각 1과 2에 해당하는 apple과 바나나라는 두 개의 키를 할당합니다. 그런 다음 이전 Key 값을 새 Key: apple로 직접 덮어씁니다. 즉, Key: apple 값을 1에서 3으로 변경합니다. 마지막으로 fmt.Println()을 통해 이 지도를 출력합니다. 🎜🎜위 코드를 실행하면 다음과 같은 결과가 출력됩니다. 🎜rrreee🎜보시다시피 Key: apple 값을 성공적으로 수정했습니다. 🎜🎜물론 이 방법에도 한계가 있습니다. 수정하려는 Key가 Map에 존재하지 않는 경우, 이 방법은 Key 수정 목적을 달성할 수 없습니다. 🎜🎜방법 3: 타사 라이브러리 사용🎜🎜위의 두 가지 방법 외에도 일부 타사 라이브러리를 사용하여 Golang 맵의 키를 수정할 수도 있습니다. 예를 들어 gouuid 라이브러리의 UUID() 함수를 사용하여 새 키를 생성하고 이를 원래 키에 할당할 수 있습니다. 이 방법은 매우 간단하지만 타사 라이브러리를 도입해야 합니다. 🎜🎜다음은 샘플 코드입니다. 🎜rrreee🎜위 코드에서는 먼저 새로운 키를 생성하기 위해 gouuid 라이브러리를 도입했습니다. 그런 다음 Map 변수를 생성하고 여기에 각각 1과 2에 해당하는 apple과 바나나라는 두 개의 키를 할당했습니다. 다음으로 UUID() 함수를 사용하여 새 키를 생성하고 이를 원래 Key: apple에 할당합니다. 즉, Key: apple을 새 키로 바꿉니다. 마지막으로 delete() 함수를 통해 이전 Key: apple을 삭제합니다. 마지막으로 fmt.Println()을 사용하여 이 지도를 출력합니다. 🎜🎜위 코드를 실행하면 다음과 같은 결과가 나옵니다. 🎜rrreee🎜보시다시피 UUID() 함수를 사용하여 새 키를 성공적으로 생성하고 원래 키로 교체했습니다. 사과. 🎜🎜요약🎜🎜위는 Golang Map의 Key를 수정하는 세 가지 방법입니다. 물론 이러한 방법들은 각각 장단점이 있으므로 실제 상황에 따라 적절한 방법을 선택해야 합니다. 더 좋은 방법이 있다면 댓글란에 공유해주세요. 🎜

위 내용은 golang 지도 수정 키의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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