zoukankan      html  css  js  c++  java
  • go语言中var声明chan、map、指针,注意的情况

    在处理超时时候出现的问题:

    问题代码为

    package main
    
    import(
    
      "fmt"
    
      "time"
    
    )
    
    func main(){
    
        var ch chan string
        go func() {
        ch <- "result"
        }()
        select {
        case res := <-ch:
            fmt.Println(res)
            return
        case <-time.After(time.Second * 5):
            fmt.Println("timeout")
        }
    }
    

     错误的原因:var ch chan string没有对ch分配空间,使得一直运行的是case <- time.After(time.Second*5)这个分支。解决方法为添加:ch = make(chan string)或者删除var ch chan string,再添加ch := make(chan string)

    思考:

      var在声明指针、chan、map的时候都要使用make分配一下空间,否则无法使用

    实现map的比较:

    var kl map[string]string
    kl["string"]="stk"
    fmt.Println(kl)  //出现错误
    
    var kt map[string]string
    kt = make(map[string]string)
    kt["string"] = "strin"
    fmt.Println(kt) //正确
    

     

  • 相关阅读:
    JS: Promise
    JS: 数据结构与算法之栈
    JS: 数组乱序
    JS: 数组扁平化
    JS:函数柯里化
    JS: 防抖节流
    JS:事件委托
    理解Node.js(译文)
    Javascript闭包入门(译文)
    你真的懂ajax吗?
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/11225145.html
Copyright © 2011-2022 走看看