Странности при компиляции программы с каналами
У меня есть такой код
package main
import (
"fmt"
"time"
)
func main(){
ch := make(chan int)
go waitOneDay(ch)
go receive(ch)
time.Sleep(time.Hour * 25)
}
func send(ch chan int) {
ch <- 1
fmt.Println("Sending value to channel complete")
}
func waitOneDay(ch chan int) {
time.Sleep(24 * time.Hour)
сh <- 1
}
func receive(ch chan int) {
time.Sleep(time.Second * 1)
fmt.Println("Timeout finished")
_ = <-ch
return
}
Когда я компилирую этот код, то получаю
./prog.go:26:2: undefined: сh
То есть не распознан канал ch внутри функции waitOneDay.
Если же закоментировать функцию waitOneDay, и заменить ее на send функцию в main,
package main
import (
"fmt"
"time"
)
func main(){
ch := make(chan int)
go send(ch)
go receive(ch)
time.Sleep(time.Hour * 25)
}
func send(ch chan int) {
ch <- 1
fmt.Println("Sending value to channel complete")
}
//func waitOneDay(ch chan int) {
// time.Sleep(24 * time.Hour)
// сh <- 1
//}
func receive(ch chan int) {
time.Sleep(time.Second * 1)
fmt.Println("Timeout finished")
_ = <-ch
return
}
то код работает как надо:
Timeout finished
Sending value to channel complete
Как мне заставить функцию waitOneDay работать?
Ссылка на go playground https://play.golang.com/p/OUHusxPiObA