I’ve been reading up on Go channels, and read that channels are FIFO. I created an unbuffered channel and a goroutine with a select like below, but am confused why the below always outputs the value 3
(the last value written to the channel)?
package main
import (
"fmt"
)
var (
valueChan = make(chan int64)
value = int64(0)
)
func Value() int64 {
return <-valueChan
}
func SetValue(newValue int64) {
value = newValue
}
func main() {
go func() {
for {
select {
case valueChan <- value:
}
}
}()
SetValue(1)
SetValue(2)
SetValue(3)
fmt.Println(Value()) // prints 3
fmt.Println(Value()) // prints 3
}