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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM