400-700-1307

【GO+区块链面试题】map线程安全

2019-01-29 14:29

下面的代码有什么问题?

 

type UserAges struct {

ages map[string]int

sync.Mutex

}

func (ua *UserAges) Add(name string, age int) {

ua.Lock()

defer ua.Unlock()

ua.ages[name] = age

}

func (ua *UserAges) Get(name string) int {

if age, ok := ua.ages[name]; ok {

return age

}

return -1

}

考点:map线程安全

解答:

可能会出现fatal error: concurrent map read and map write. 修改一下看看效果

 

func (ua *UserAges) Get(name string) int {

ua.Lock()

defer ua.Unlock()

if age, ok := ua.ages[name]; ok {

return age

}

return -1

}

开班信息

当前校区

北京校区
  • 北京校区
  • 上海校区
  • 广州校区
  • 沈阳校区
  • 杭州校区
  • 南京校区
  • 郑州校区
  • 成都校区
  • 深圳校区
  • 西安校区
  • 苏州校区
  • 深圳沙井
  • 深圳观澜
  • 深圳龙岗
  • 武汉校区
  • 西宁校区
  • 石家庄校区
  • 湖北咸宁
  • 广东惠州
  • 广东佛山

                    Copyright © 2007-2019 IT兄弟连教育 版权所有 京ICP备11018177号  京公网安备 11010802026987号