在處理超時時候出現的問題:
問題代碼為
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) //正確
