Go: предложение: cmd / vet: vet должно предупреждать, когда тип time.Time (или типы встраивают его) используется в качестве ключей карты.

Созданный на 4 дек. 2017  ·  3Комментарии  ·  Источник: golang/go

Какую версию Go вы используете ( 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, могут быть и другие типы, которые нельзя использовать в качестве типов ключей карты.

Что вы видели вместо этого?

ничего не сообщается

FrozenDueToAge Proposal

Самый полезный комментарий

Я не думаю, что это соответствует требованиям ветеринарной проверки.

Совершенно верно использовать time.Time в качестве ключа карты, если вы знаете, что делаете. Думаю, для правильного кода это было бы слишком шумно.

Но кто-нибудь может провести некоторый анализ на GitHub, чтобы узнать, какой процент времени. Карты с временным ключом действительны.

Все 3 Комментарий

Я не думаю, что это соответствует требованиям ветеринарной проверки.

Совершенно верно использовать time.Time в качестве ключа карты, если вы знаете, что делаете. Думаю, для правильного кода это было бы слишком шумно.

Но кто-нибудь может провести некоторый анализ на GitHub, чтобы узнать, какой процент времени. Карты с временным ключом действительны.

Я написал линтер, который обнаруживает этот тип проблемы, если вам интересно: https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md

Я сейчас пытаюсь интегрировать его с gometalinter.

Теперь, когда ветеринар участвует в тестировании, планка для новых проверок еще выше. Поскольку иногда _правильно иметь time.Time в качестве ключа карты, отклонить его в ветеринарной клинике - это не нормально.

Вы можете поговорить с @dominikh о добавлении этого в megacheck или один из других линтеров.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

enoodle picture enoodle  ·  3Комментарии

bradfitz picture bradfitz  ·  3Комментарии

rsc picture rsc  ·  3Комментарии

myitcv picture myitcv  ·  3Комментарии

natefinch picture natefinch  ·  3Комментарии