time – Dúvida com Random e Atividades Periódicas em GoLang

Existe alguma forma de eu fazer com que seja executado um fmt.Printf(choosenCity) a cada 6 horas e, que a cada execução, ele escolha um elemento diferente do Array?
Eu até consegui fazer com que ele executasse de forma periódica depois de algumas gambiarras, mas li que não é recomendado usar time.sleep() e ele sempre resulta no mesmo valor, a não ser que eu feche e execute o script novamente.

arrCities := (6)string{
    "Teste1",
    "Teste2",
    "Teste3",
    "Teste4",
    "Teste5",
    "Teste6",
}
rand.Seed(time.Now().UnixNano())
choosenCity := arrCities(rand.Intn(len(arrCities)))
go func() {
        for true {
            fmt.Printf(choosenCity)
            time.Sleep(5 * time.Second)
        }
    }()
    // wait for 10 seconds before app finished
    time.Sleep(60 * time.Second)

}

Eu gostaria de (sem fechar o script), a cada 6 horas, pickar um elemento aleatório da Array, e então imprimir.

//OBS a Função `go func()` está dentro da main()