Ich finde mich häufig Kanäle verwenden, um Dinge zu stoppen. In diesen Fällen wird der Kanal ausschließlich zur Signalisierung verwendet und keine der Daten wird tatsächlich verwendet.Welcher Kanaltyp verwendet am wenigsten Speicherplatz in Go?
Zum Beispiel:
package main
import (
"fmt"
"time"
)
func routine(stopChan chan bool) {
fmt.Println("goroutine: I've started!")
<-stopChan
fmt.Println("goroutine: Cya'round pal")
}
func main() {
fmt.Println("main: Sample program run started")
stopChan := make(chan bool)
go routine(stopChan)
fmt.Println("main: Fired up the goroutine")
stopChan <- true
time.Sleep(1 * time.Second)
fmt.Println("main: Sample program run finished")
}
// Sample output:
//
// main: Sample program run started
// main: Fired up the goroutine
// goroutine: I've started!
// goroutine: Cya'round pal
// main: Sample program run finished
Run/view it, wenn Sie auf dem golang Spielplatz gefallen.
Meine Frage ist:
Welche Kanaltyp hat die hellste Speicherbedarf in Go?
z.B. Wird ein bool chan weniger Aufwand benötigen als eine leere Struktur {} chan?
chan bool
chan byte
chan interface{}
chan struct{}
...
etwas anderes?
Ich habe nicht in der Quelle verifiziert, aber ich würde erwarten, dass der Overhead des Kanals selbst den Effekt von Byte, Bool oder Struct {} für einen ungepufferten Kanal dominiert. – Volker