Bon, j'ai perdu une demie heure, regardez pourquoi. Bon déjà pour quelque chose qui devrait être écrit en 30sec dans n'importe quel langage, j'ai écrit un truc comme ça :
func (v *virtualPointWorkerImpl) setNextProcessTime(now time.Time) {
subtract := (now.Minute() % 15) * 60 * second + now.Second() * second + now.Nanosecond()
v.lastProcessStartInterval = now.Add(-subtract)
}L'idée était que "j'arrondisse" le temps à la période de 15 minutes auquel il appartient. Bref rien que de très simple. Mais je n'arrivais absolument pas à trouver pourquoi ça ne compilait pas.
cannot use -subtract (type int) as type time.Duration in argument to now.AddDonc bon après comme time.Duration est un int64 j'essaie de convertir en int64, ça marche dans certains cas et ça matche la compréhension que j'avais de go.
v.lastProcessStartInterval = now.Add(int64(-subtract))Toujours pas.
workers/temp.go:50: cannot use int64(-subtract) (type int64) as type time.Duration in argument to time.AddAlors j'essaie ça :
v.lastProcessStartInterval = now.Add(time.Duration(-subtract))Ce qui ne marche pas mieux.
workers/temp.go:50: time.Duration undefined (type time.Time has no field or method Duration)Après des recherches (c'est super chiant d'utilisé un langage utilisé par 3 pelés qui ne sont même pas d'accord sur la façon d'importer des packages) je suis arrivé à ça
http://stackoverflow.com/questions/13268834/time-time-undefined.Voilà, oui y avait une variable nommée time qqpart ailleurs dans mon code. Maintenant plus, et ça compile.
Un autre truc rigolo aussi, c'est que quand tu parses une duration, tu dois écrire une string de référence disant comment le temps est. Alors au début j'avais pris un truc comme ça :
const shortForm = "2006-08-02 03:00"
time, error := time.Parse(shortForm, "2016-08-22 18:00")
if error != nil {
log.Fatal(error)
}(Vous voyez aussi la belle façon innovative de gérer les erreurs en Go, j'en rêvais à l'époque en C.). Ca marchait bien, sauf qu'une fois j'ai eu une date à 18h comme vous le voyez ci-dessus. Runtime error:
parsing time "2016-08-22 18:00": hour out of rangeRecherche sur Internet, encore qqes minutes, et en fait au lieu de mettre 03:00 comme heure de référence faut mettre 15:00 sinon il cherche un AM/PM. Qui n'apparaît pourtant pas dans ma template string, que j'ai pas mis parce que je suis Européen et que c'est comme ça que les heures devraient être écrites partout en tous cas sur un ordinateur parce que c'est pas ambigu. Rondudjuuu.
En plus mon collègue est pas terrible, le seul qui connaît go ici et qui a voulu qu'on utilise ça, répond pas. Il doit probablement considérer mes questions comme noob, alors je le vois lire mes msgs sur son écran et passer à autre chose. Aucun doute que je le soûle mais bon, si ça ne tenait qu'à moi on ne passerait jamais à un langage qu'il n'y a qu'une seule personne dans la boîte qui est formé pour.
