您的位置:首页 > 编程语言 > Go语言

golang channel string 信号乱码

2016-07-23 14:59 507 查看
原因golang代码编写是允许在同一个forselect代码结构中使用相同的变量名,这样会造成运行时chan发送的内容出现乱码现象,乱码率大概在98%左右,所以这是一个坑,希望大家别重复踩坑。以下是代码说明:

varDelHubschanstring=make(chanstring)
varDelHubchanstring=make(chanstring)
gofunc(){
Deller.DelHub<-key
}()
//会出现乱码的代码,我在两个不同的chan中定义并使用了两个相同命名的变量,这就是造成乱码问题所在
funcdelChan(){
for{
select{
caseukey,ok:=<-Deller.DelHubs:
ifok{
hs,err:=hubStartWith(ukey)
iferr!=nil{
break
}
for_,v:=rangehs{
ukeyhid:=ukey+":"+strconv.FormatInt(v.Id,10)
del(ukeyhid)
godeldos(ukeyhid)
}
}
caseukeyhid,ok:=<-Deller.DelHub:
ifok{
del(ukeyhid)
godeldos(ukeyhid)
}
}
}
}
//解决方法,很简单只要改成各自不同的变量名就可以
funcdelChan(){
for{
select{
caseukey,ok:=<-Deller.DelHubs:
ifok{
hs,err:=hubStartWith(ukey)
iferr!=nil{
break
}
for_,v:=rangehs{
delhubs:=ukey+":"+strconv.FormatInt(v.Id,10)
del(delhubs)
godeldos(delhubs)
}
}
casedelhub,ok:=<-Deller.DelHub:
ifok{
del(delhub)
godeldos(delhub)
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: