In Go, wenn wir einen Typ mit einer Methode, die einige geschlungenen Mechanismus beginnt (Polling A und tun B für immer) ist es am besten, dies auszudrücken, wie:Idiomatic Golang goroutines
// Run does stuff, you probably want to run this as a goroutine
func (t Type) Run() {
// Do long-running stuff
}
und dokumentieren, dass diese wahrscheinlich will als goroutine gestartet werden (und den Anrufer Deal mit, dass lassen)
Oder zu verstecken diese vom Anrufer:
// Run does stuff concurrently
func (t Type) Run() {
go DoRunStuff()
}
ich bin neu zu gehen und ich nicht sicher, ob Konvention sagt lassen Sie den Anrufer pr efix mit 'go' oder tun Sie es für sie, wenn der Code async ausgeführt wird.
Meine aktuelle Ansicht ist, dass wir dokumentieren sollten und dem Anrufer eine Wahl geben. Mein Denken ist, dass in Go die Gleichzeitigkeit nicht Teil der exponierten Schnittstelle ist, sondern eine Eigenschaft, sie zu benutzen. Ist das richtig?
Bisher zwei gegensätzliche Antworten mit gleichen Stimmen. Dies kann von Fall zu Fall so sein, es sei denn, Rob Pike oder jemand antwortet: P –
Sie sind nicht unbedingt gegensätzliche Antworten. Ich denke, beide Antworten sagen, dass es unter bestimmten Umständen in Ordnung ist. Ich habe nur versucht, Ihnen über Ihr Beispiel hinaus einen allgemeineren Rat zu geben. – zmb
Sie könnten in diesem Jahr ein ähnliches Video von GopherConIndia interessiert sein: https://www.youtube.com/watch?v=Y6KnnRh6wVo&list=PLxFC1MYuNgJTY3uQ5Ja4F5Sz305nnrBOq&index=14 – zmb