go version
) ?aller à la version go1.9.2 linux/amd64
Oui
package main
import "time"
type T struct {
time.Time
}
var a map[T]string
func main() {
}
$ go vet a.go
$ [nothing reported]
$ go vet a.go
$ time.Time is not a good map key type.
Comme time.Time, il peut y avoir d'autres types, qui ne peuvent pas être utilisés comme types de clé de carte.
rien de signalé
Je ne pense pas que cela réponde à la barre pour un contrôle vétérinaire.
Il est parfaitement valable d'utiliser un time.Time comme clé de carte, si vous savez ce que vous faites. Je pense que ce serait trop bruyant pour un code valide.
Mais quelqu'un pourrait faire une analyse sur GitHub pour voir quel pourcentage de temps. Les cartes à clé temporelle sont valides.
J'ai écrit un linter qui détecte ce type de problème si cela vous intéresse : https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md
J'essaie de l'intégrer à gometalinter en ce moment.
Maintenant que le vétérinaire fait partie du go test, la barre est encore plus élevée pour les nouveaux contrôles. Parce qu'il _est_ valable parfois d'avoir un temps. Le temps comme clé de carte, le rejeter chez le vétérinaire n'est pas OK.
Vous pouvez parler à @dominikh de l'ajout de ceci à megacheck ou à l'un des autres linters.
Commentaire le plus utile
Je ne pense pas que cela réponde à la barre pour un contrôle vétérinaire.
Il est parfaitement valable d'utiliser un time.Time comme clé de carte, si vous savez ce que vous faites. Je pense que ce serait trop bruyant pour un code valide.
Mais quelqu'un pourrait faire une analyse sur GitHub pour voir quel pourcentage de temps. Les cartes à clé temporelle sont valides.