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)
    }
    }
    }
    }
  • 相关阅读:
    JQuery中$.ajax()方法参数详解
    overload和override的区别
    linux 安装jdk和tomcat
    linux链接外网手动设置
    RISC与CISCCPU构架
    32位与64位内存区别
    system 系统调用、gcc编译过程
    c helloworld
    C语言中 有符号数、无符号数、整数溢出 (转)
    samba安装
  • 原文地址:https://www.cnblogs.com/jacle169/p/5698725.html
Copyright © 2011-2022 走看看