go version
)?версия go1.9.2 linux / 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, могут быть и другие типы, которые нельзя использовать в качестве типов ключей карты.
ничего не сообщается
Я не думаю, что это соответствует требованиям ветеринарной проверки.
Совершенно верно использовать time.Time в качестве ключа карты, если вы знаете, что делаете. Думаю, для правильного кода это было бы слишком шумно.
Но кто-нибудь может провести некоторый анализ на GitHub, чтобы узнать, какой процент времени. Карты с временным ключом действительны.
Я написал линтер, который обнаруживает этот тип проблемы, если вам интересно: https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md
Я сейчас пытаюсь интегрировать его с gometalinter.
Теперь, когда ветеринар участвует в тестировании, планка для новых проверок еще выше. Поскольку иногда _правильно иметь time.Time в качестве ключа карты, отклонить его в ветеринарной клинике - это не нормально.
Вы можете поговорить с @dominikh о добавлении этого в megacheck или один из других линтеров.
Самый полезный комментарий
Я не думаю, что это соответствует требованиям ветеринарной проверки.
Совершенно верно использовать time.Time в качестве ключа карты, если вы знаете, что делаете. Думаю, для правильного кода это было бы слишком шумно.
Но кто-нибудь может провести некоторый анализ на GitHub, чтобы узнать, какой процент времени. Карты с временным ключом действительны.