码迷,mamicode.com
首页 > 编程语言 > 详细

go语言中var声明chan、map、指针,注意的情况

时间:2019-07-22 13:18:40      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:否则   import   处理   fun   声明   sel   Go语言   使用   int   

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

问题代码为

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) //正确

 

go语言中var声明chan、map、指针,注意的情况

标签:否则   import   处理   fun   声明   sel   Go语言   使用   int   

原文地址:https://www.cnblogs.com/MyUniverse/p/11225145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!