Собственная функция sleep

Всем привет Стоит задача "Написать свою фукнцию sleep Мне первое в голову пришло использоваться time.After, но я смотрю и мне кажется что я не прав и решение не то, так как выглядит слишком уж просто

package main

import (
    "log"
    "time"
)

func sleep(d time.Duration) {
    select {
    case <-time.After(d):
    }
}

func CallSleep() {
    log.Println("Do something")
    sleep(5 * time.Second)
    log.Println("Something else")
}

Или такая функция

func sleep2(d time.Duration) time.Time {
    ticker := time.Tick(d)
    for done := range ticker {
        return done
    }
    return time.Now()
}

Ответы (1 шт):

Автор решения: Nikolay Tuzov

мне кажется что я не прав и решение не то, так как выглядит слишком уж просто

Это как раз хорошо - чем больше опыта у разработчика, тем проще выглядят его решения. К этому и стоит стремиться. И уж точно не стоит усложнять свои решения намеренно.

Мне нравится первый вариант решения. Но, как верно заметили в комментариях, можно ещё проще:

func sleep(d time.Duration) {
    <-time.After(d)
}
→ Ссылка