Я - неофит голангов, и я столкнулся с довольно интересной структурой управления, которая не соответствует классической конструкции императива для цикла. Мне также не удалось найти документацию по структуре. Ниже приведен код в вопросе:Что делает golang для {..block ..} без условий?
for {
// read each incoming message
m, err := getMessage(ws)
if err != nil {
log.Fatal(err)
}
// see if we're mentioned
if m.Type == "message" && strings.HasPrefix(m.Text, "<@"+id+">") {
// if so try to parse if
ans := lookup(session, m.Text)
if len(ans)>0 {
// looks good, get the quote and reply with the result
go func(m Message) {
for _, def := range ans {
if len(def[1]) > 0 {
m.Text = "*" + def[0] + " " + def[1] + "*: " + def[2]
} else {
m.Text = "*" + def[0] + "*: " + def[2]
}
postMessage(ws, m)
}
}(m)
// NOTE: the Message object is copied, this is intentional
} else {
// huh?
m.Text = fmt.Sprintf("sorry, that does not compute\n")
postMessage(ws, m)
}
}
}
построить ли цикл только цикл навсегда или есть система троеборье связывания за кулисами?
* Содержит ли цикл только цикл навсегда * Да. –
В [Tour of Go] (http://tour.golang.org/flowcontrol/3) и в [Effective Go] (https://golang.org/doc/effective_go.html#for) – JimB