猿问

for{} 和 for i=0 的区别;i++ {} 在进行中

我目前正在学习 Go。我正在阅读 Go编程简介这本书


我在并发部分并形成我所理解的我可以看到两种定义无限循环的方法 go 程序。


func pinger(c chan string) {

    for i := 0; ; i++ {

        c <- "ping" 

    }

}


func printer(c chan string) {

   for {

       msg := <- c

       fmt.Println(msg)

       time.Sleep(time.Second * 1)

   }

}

我想知道 pinger 函数中的 i 变量有什么用。声明无限循环的最佳“去”方式是什么?我会说打印机功能中的那个更好,但由于我是新手,我可能会错过 pinger 功能中的声明。


感谢所有愿意提供帮助的人。


慕娘9325324
浏览 157回答 2
2回答

元芳怎么了

第i一个循环是多余的;摆脱未使用的变量总是最好的,因此您也应该for{}在 pinger() 函数中使用 a 。这是一个工作示例:package mainimport(&nbsp;"time"&nbsp;"fmt")func main() {&nbsp; &nbsp; c := make(chan string)&nbsp; &nbsp; go printer(c)&nbsp; &nbsp; go pinger(c)&nbsp; &nbsp; time.Sleep(time.Second * 60)}func pinger(c chan string) {&nbsp; &nbsp; for{&nbsp; &nbsp; &nbsp; &nbsp; c <- "ping"&nbsp;&nbsp; &nbsp; }}func printer(c chan string) {&nbsp; &nbsp;for {&nbsp; &nbsp; &nbsp; &nbsp;msg := <- c&nbsp; &nbsp; &nbsp; &nbsp;fmt.Println(msg)&nbsp; &nbsp; &nbsp; &nbsp;time.Sleep(time.Second * 1)&nbsp; &nbsp;}}

动漫人物

“最好”的方法是编写易于阅读和维护的代码。您的变量iinfunc pinger没有用处,以后偶然发现该代码的人将很难理解它的用途。我只会做func pinger(c chan string) {&nbsp; for {&nbsp; &nbsp; c <- "ping"&nbsp;&nbsp; }}
随时随地看视频慕课网APP

相关分类

Go
我要回答