zoukankan      html  css  js  c++  java
  • golang channel string 信号乱码

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

    var DelHubs chan string = make(chan string)
    var DelHub chan string = make(chan string)
    go func() {
    Deller.DelHub <- key
    }()
     
    //会出现乱码的代码,我在两个不同的chan中定义并使用了两个相同命名的变量,这就是造成乱码问题所在
    func delChan() {
    for {
    select {
    case ukey, ok := <-Deller.DelHubs:
    if ok {
    hs, err := hubStartWith(ukey)
    if err != nil {
    break
    }
    for _, v := range hs {
    ukeyhid := ukey + ":" + strconv.FormatInt(v.Id, 10)
    del(ukeyhid)
    go deldos(ukeyhid)
    }
    }
    case ukeyhid, ok := <-Deller.DelHub:
    if ok {
    del(ukeyhid)
    go deldos(ukeyhid)
    }
    }
    }
    }
    //解决方法,很简单只要改成各自不同的变量名就可以
    func delChan() {
    for {
    select {
    case ukey, ok := <-Deller.DelHubs:
    if ok {
    hs, err := hubStartWith(ukey)
    if err != nil {
    break
    }
    for _, v := range hs {
    delhubs := ukey + ":" + strconv.FormatInt(v.Id, 10)
    del(delhubs)
    go deldos(delhubs)
    }
    }
    case delhub, ok := <-Deller.DelHub:
    if ok {
    del(delhub)
    go deldos(delhub)
    }
    }
    }
    }
  • 相关阅读:
    Beta冲刺——星期四
    Beta冲刺——星期三
    团队学期总结
    Beta版本发布
    第三天Beta冲刺
    第二天Beta冲刺
    第一天Beta冲刺
    个人作业——Alpha项目测试
    第四次团队作业
    第三次团队作业
  • 原文地址:https://www.cnblogs.com/jacle169/p/5698725.html
Copyright © 2011-2022 走看看