关于作业:交换key 和value

关于作业:交换key 和value

# 具体遇到的问题

# 报错信息的截图
没错
# 相关课程内容截图
没错

# 尝试过的解决思路和结果
没错

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

package main

import "fmt"

func main() {
// map 的key 和value 互换
  // 1 申明一个map对象
  var people map[string]string

  // 2 使用make 分配空间
  people = make(map[string]string, 2)
people["name"] = "cc"

  // 3 交换key value
  fmt.Printf("交换前:%s  长度:%d \n,", people, len(people))
for key, value := range people {
people[key], people[value] = people[value], people[key]
// people[value]=key
  }

fmt.Printf("交换后:%s 长度:%d \n", people, len(people))
}

/*
  1。delete 的疑问?- delete(people,key)
  在range里面操作的时候实际上在交换的时候因为key的交换会导致 出现两个数据,有点强迫只想完美的替换:是否可以把key和value的地址给替换了[&key, &value = &value, &key]
*/

在这里输入代码,可通过选择【代码语言】突出显

正在回答

登陆购买课程后可参与讨论,去登陆

2回答
  • 慕仰4468487 提问者 #1
    我想多了。。字典的key是不可变的 不能切换地址。。。
    2020-11-04 22:41:38
  • 精慕门4214220 回复 提问者 慕仰4468487 #2
    key是唯一的
    2020-11-04 23:41:16
  • 同学很认真,一看就是爱钻研的同学。 go语言中实现map的key与value互换的方式不少,除了上述所列之外,还可以借助外部变量做中间临时存储。 不管用什么方法,首先衡量一个算法的优劣还是要看它在咱们计算中的执行效率如何,仔细体会下课程当中所讲解的map的原理。 继续加油~
    2020-11-05 09:28:44
提问者 慕仰4468487 2020-11-04 14:56:36

有点想不明白为啥:key 和value 现在拿出来了 在内存中 单纯的交换地址,达到换值的效果为啥会报错。。

  • func main(){ var mapVar map[string]string = map[string]string{"1":"hello","2":"world"} fmt.Println(mapVar) for key,value := range mapVar{ delete(mapVar,key) mapVar[value] = key } fmt.Println(mapVar) }
    2020-11-04 20:05:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师