Go: 提案:cmd / vet:vetは、time.Timeタイプ(またはそれを埋め込むタイプ)がマップキーとして使用されるときに警告する必要があります。

作成日 2017年12月04日  ·  3コメント  ·  ソース: golang/go

どのバージョンのGoを使用していますか( go version )?

goバージョンgo1.9.2linux / amd64

この問題は最新リリースで再現されますか?

はい

あなたは何をした?

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.

time.Timeのように、マップキータイプとして使用できない他のタイプがいくつかある場合があります。

代わりに何を見ましたか?

何も報告されていません

FrozenDueToAge Proposal

最も参考になるコメント

私はこれが獣医チェックの基準を満たしているとは思わない。

何をしているのかがわかっている場合は、time.Timeをマップキーとして使用することは完全に有効です。 有効なコードにはノイズが多すぎると思います。

しかし、誰かがGitHubで分析を行って、時間の何パーセントかを確認することができます。時間キー付きマップは有効です。

全てのコメント3件

私はこれが獣医チェックの基準を満たしているとは思わない。

何をしているのかがわかっている場合は、time.Timeをマップキーとして使用することは完全に有効です。 有効なコードにはノイズが多すぎると思います。

しかし、誰かがGitHubで分析を行って、時間の何パーセントかを確認することができます。時間キー付きマップは有効です。

興味があれば、このタイプの問題を検出するリンターを作成しました: https

私は今それをgometalinterと統合しようとしています。

獣医が囲碁テストの一部になったので、新しいチェックのバーはさらに高くなります。 time.Timeをマップキーとして持つことは時々有効であるため、獣医でそれを拒否することはOKではありません。

これをメガチェックまたは他のリンターの1つに追加することについて、 @ dominikhに相談することができます。

このページは役に立ちましたか?
0 / 5 - 0 評価