猿问

戈朗的后退箭头“<-”是什么?

我在一小段代码中使用它来工作,没有它,程序就会继续下一行,而无需等待计时器完成。time.After()


下面是一个示例:


package main


import (

    "fmt"

    "time"

)


func main() {

    a := 1

    fmt.Println("Starting")

    <-time.After(time.Second * 2)

    fmt.Println("Printed after 2 seconds")

}


慕桂英4014372
浏览 73回答 1
1回答

白衣非少年

运算符用于等待通道的响应。在此代码中,它用于等待 将在 X 时间后馈送的通道。<-time.After您可以了解有关Go之旅中@Marc提到的频道的更多信息。请注意,如果您不处理多个通道结果(使用 as ),则可以将其替换为同步语句。<-time.After(time.Second * 2)time.Sleep(time.Second * 2)select通常用于将涉及一个或多个通道的异步操作的结果超时,如下所示:time.Afterfunc doLongCalculations() (int, error) {&nbsp; &nbsp; resultchan := make(chan int)&nbsp; &nbsp; defer close(resultchan)&nbsp; &nbsp; go calculateSomething(resultchan)&nbsp; &nbsp; select {&nbsp; &nbsp; case <-time.After(time.Second * 2):&nbsp; &nbsp; &nbsp; &nbsp; return nil, fmt.Errorf("operation timed out")&nbsp; &nbsp; case result := <-resultchan&nbsp; &nbsp; &nbsp; &nbsp; return result, nil&nbsp; &nbsp; }}同样,我们强烈建议您参加Go之旅,以了解Go的基本:)
随时随地看视频慕课网APP

相关分类

Go
我要回答