Go: propuesta: cmd / vet: el veterinario debe advertir cuando se usa el tipo de tiempo (o los tipos incrustados) como claves del mapa.

Creado en 4 dic. 2017  ·  3Comentarios  ·  Fuente: golang/go

¿Qué versión de Go estás usando ( go version )?

go versión go1.9.2 linux / amd64

¿Este problema se reproduce con la última versión?

¿Qué hiciste?

package main

import "time"

type T struct {
    time.Time
}

var a map[T]string

func main() {
}

$ go vet a.go
$ [nothing reported]

¿Qué esperabas ver?

$ go vet a.go
$ time.Time is not a good map key type.

Como el tiempo. Tiempo, puede haber algunos otros tipos, que no pueden usarse como tipos de clave de mapa.

¿Qué viste en su lugar?

nada informado

FrozenDueToAge Proposal

Comentario más útil

No creo que esto cumpla con los requisitos para un chequeo veterinario.

Es perfectamente válido usar un tiempo, el tiempo como clave del mapa, si sabes lo que estás haciendo. Creo que sería demasiado ruidoso para un código válido.

Pero alguien podría hacer un análisis en GitHub para ver qué porcentaje de tiempo. Los mapas con clave de tiempo son válidos.

Todos 3 comentarios

No creo que esto cumpla con los requisitos para un chequeo veterinario.

Es perfectamente válido usar un tiempo, el tiempo como clave del mapa, si sabes lo que estás haciendo. Creo que sería demasiado ruidoso para un código válido.

Pero alguien podría hacer un análisis en GitHub para ver qué porcentaje de tiempo. Los mapas con clave de tiempo son válidos.

Escribí un linter que detecta este tipo de problema si está interesado: https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md

Estoy tratando de integrarlo con gometalinter en este momento.

Ahora que el veterinario es parte de la prueba, la barra es aún más alta para nuevos controles. Porque a veces es válido tener un tiempo. El tiempo como clave de mapa, rechazarlo en el veterinario no está bien.

Puede hablar con @dominikh sobre agregar esto a megacheck o uno de los otros linters.

¿Fue útil esta página
0 / 5 - 0 calificaciones