Avatar ·

Como multiplicar duração (time.Duration) por um número inteiro em Go?

Olá a todos! Comecei a estudar Go recentemente e me deparei com um problema ao trabalhar com o pacote time. Preciso criar um timer que dispare a cada N segundos, onde N é fornecido pelo usuário como um número inteiro.

package main

import (
    "fmt"
    "time"
)

func main() {
    var n int
    fmt.Print("Digite o intervalo em segundos: ")
    fmt.Scan(&n)
    
    // Tentando multiplicar a duração
    interval := time.Second * n  // Erro!
    fmt.Println(interval)
}

O compilador gera o erro: invalid operation: time.Second * n (mismatched types time.Duration and int). Entendo que time.Second é do tipo time.Duration, e n é int, e eles não podem ser simplesmente multiplicados. Mas como criar corretamente um intervalo múltiplo de um segundo? Em outras linguagens, como Python, eu simplesmente escrevia datetime.timedelta(seconds=n), e funcionava. Estou perdendo algo em Go?

Eu