跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 关于 golang 的类型转换
未分類
16 7 月 2020

关于 golang 的类型转换

关于 golang 的类型转换

資深大佬 : echooo0 6

接触 golang 不久,感觉这个语法用起来跟其他语言相比麻烦不少。。。。

使用 sync.map 存储 slice 切片的数据,代码如下

curSliceI, ok := syncMap.Load(curKey)  curSlice:= curSliceI.([]int)  curSlice:= append(curSlice, curId)  

golang 官方 sync.map 的 Load 方法返回的是两个参数,curSliceI 是 interface 类型,ok 是 bool 类型代表是否成功

这样的话还要多写一行来做类型转换来拿到 value,有没有啥方法可以简写成一行直接拿值,做类型转换的。。。。

而且这个 interface 类型的 curSliceI, 如果为空的话,做类型转换还会 panic 报错,还要像下面这样来再

做一次判断,有没有啥简便的写法么?

curSlice, ok := curSliceI.([]int) if !ok {    fmt.Println("It's not ok for type")    return } 

大佬有話說 (10)

  • 資深大佬 : MrTreasure

    因为没有泛型,没有通用容器,后面加上泛型就不会再自己转换了

  • 主 資深大佬 : echooo0

    @MrTreasure 看了下泛型的意义写的还挺好的 https://www.jianshu.com/p/5179ede4c4cf ,

    现在 go 是用 interface 这种非侵入式的方式,还是需要手动去转换类型,对于习惯了其他语言的人估计一时有点难以适应。。。

    不过听说 go2 泛型要出来了

  • 資深大佬 : neoblackcap

    没有,要不你写一个函数封装一下?

  • 資深大佬 : bruce0

    没有泛型,现在只能用 interface 这个,通过强转来搞

  • 資深大佬 : kidtest

    感觉用 map + RWMutex 方便点,不需要做 type assert

  • 資深大佬 : ViggoSite

    从来没用过这个 syncMap,使用场景是啥 (⊙ˍ⊙)

  • 資深大佬 : emeab

    https://draveness.me/whys-the-design-go-generics/ 这盘我觉得写的挺好的

  • 資深大佬 : wangritian

    @ViggoSite 普通 map 在多线程同时读写时会报错,只读没事

  • 資深大佬 : ViggoSite

    @ViggoSite 噢,感谢解答,,不够我个人连 map 好像都很少用 ( ̄ m  ̄)

  • 資深大佬 : linvon

    建议还是 map 加锁吧,syncMap 这种黑科技用起来麻烦性能也不如自己加锁

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具