I'm trying to write my own sleep function equivalent to time.Sleep
using time.After
in Go.
Here's the code. First attempt:
func Sleep(x int) {
msg := make(chan int)
msg := <- time.After(time.Second * x)
}
Second attempt:
func Sleep(x int) {
time.After(time.Second * x)
}
Both return errors, can someone explain to me how to write a sleep function equivalent to time.Sleep
using time.After
and if possible when do I use channel?
time.After()
returns you a channel. And a value will be send on the channel after the specified duration.So just receive a value from the returned channel, and the receive will block until the value is sent:
Your errors:
In your first example:
msg
is already declared, and so the Short variable declaration:=
cannot be used. Also the recieved value will be of typetime.Time
, so you can't even assign it tomsg
.In your second example you need a type conversion as
x
is of typeint
andtime.Second
is of typetime.Duration
, andtime.After()
expects a value of typetime.Duration
.