Я ловлю себя на том, что часто использую каналы, чтобы что-то остановить. В этих случаях канал используется исключительно как средство передачи сигналов, и фактически никакие данные не используются.
Например:
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
Запустите/просмотрите его на игровой площадке golang.
Мой вопрос:
Какой тип канала занимает меньше всего памяти в Go?
например Будет ли логический чейн требовать меньше накладных расходов, чем пустой struct{} chan?
chan bool
chan byte
chan interface{}
chan struct{}
...
что-то другое?