Go: proposition : cmd/vet : vet doit avertir lorsque le type time.Time (ou les types l'intègrent) est utilisé comme clés de carte.

Créé le 4 déc. 2017  ·  3Commentaires  ·  Source: golang/go

Quelle version de Go utilisez-vous ( go version ) ?

aller à la version go1.9.2 linux/amd64

Ce problème se reproduit-il avec la dernière version ?

Oui

Qu'est-ce que tu as fait?

package main

import "time"

type T struct {
    time.Time
}

var a map[T]string

func main() {
}

$ go vet a.go
$ [nothing reported]

Que vous attendiez-vous à voir ?

$ 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.

Qu'avez-vous vu à la place ?

rien de signalé

FrozenDueToAge Proposal

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.

Tous les 3 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes