Avatar ·

Comment multiplier une durée (time.Duration) par un entier en Go ?

Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème avec le package time. J'ai besoin de créer un minuteur qui se déclenche toutes les N secondes, où N est saisi par l'utilisateur comme un entier.

package main

import (
    "fmt"
    "time"
)

func main() {
    var n int
    fmt.Print("Entrez l'intervalle en secondes : ")
    fmt.Scan(&n)
    
    // J'essaie de multiplier la durée
    interval := time.Second * n  // Erreur !
    fmt.Println(interval)
}

Le compilateur donne l'erreur : invalid operation: time.Second * n (mismatched types time.Duration and int). Je comprends que time.Second est de type time.Duration et n est de type int, et on ne peut pas simplement les multiplier. Mais comment créer correctement un intervalle multiple d'une seconde ? Dans d'autres langages, comme Python, j'écrivais simplement datetime.timedelta(seconds=n) et tout fonctionnait. Est-ce que j'ai raté quelque chose en Go ?

Je