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)
    }
    }
    }
    }
  • 相关阅读:
    PHP线程安全
    Oracle中MD5+Base64加密实现
    1002. A+B for Polynomials (25)
    1001. A+B Format (20)
    Rails,uva 514
    Database,Uva1592
    Hello World for U
    D3.js 力导向图
    从零开始CSS(一 2016/9/21)
    从零开始HTML(三 2016/9/20)
  • 原文地址:https://www.cnblogs.com/jacle169/p/5698725.html
Copyright © 2011-2022 走看看