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κ³Ό λ§μ°¬κ°μ§λ‘ 맡 ν€ μ νμΌλ‘ μ¬μ©ν μ μλ λ€λ₯Έ μ νμ΄ μμ μ μμ΅λλ€.
λ³΄κ³ λ λ° μμ
λλ μ΄κ²μ΄ μμμ¬ κ²μ¬μ κΈ°μ€μ λΆν©νμ§ μλλ€κ³ μκ°ν©λλ€.
μκ°μ μ¬μ©νλ κ²μ μλ²½νκ² μ ν¨ν©λλ€. μκ°μ μ§λ ν€λ‘ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μ ν¨ν μ½λμ λν΄μλ λ무 μλλ½λ€κ³ μκ°ν©λλ€.
κ·Έλ¬λ λκ΅°κ° GitHubμμ λͺ νΌμΌνΈμ μκ°μ νμΈνκΈ° μν΄ λΆμμ ν μ μμ΅λλ€. μκ° ν€ λ§΅μ΄ μ ν¨ν©λλ€.
κ΄μ¬μ΄ μλ κ²½μ° μ΄λ¬ν μ νμ λ¬Έμ λ₯Ό κ°μ§νλ λ¦°ν°λ₯Ό μμ±νμ΅λλ€. https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md
μ§κΈ gometalinterμ ν΅ν©νλ €κ³ ν©λλ€.
μ΄μ μμμ¬κ° ν μ€νΈμ μΌλΆκ° λμκΈ° λλ¬Έμ μλ‘μ΄ κ²μ¬μ λν κΈ°μ€μ λμ± λμμ‘μ΅λλ€. λλλ‘ μκ°μ κ°λ κ²μ΄ _is_ μ ν¨νκΈ° λλ¬Έμ. μκ°μ μ§λ ν€λ‘ μ¬μ©νλ―λ‘ μμμ¬μμ μ΄λ₯Ό κ±°λΆνλ κ²μ μ³μ§ μμ΅λλ€.
megacheck λλ λ€λ₯Έ λ¦°ν° μ€ νλμ μ΄κ²μ μΆκ°νλ κ²μ λν΄
κ°μ₯ μ μ©ν λκΈ
λλ μ΄κ²μ΄ μμμ¬ κ²μ¬μ κΈ°μ€μ λΆν©νμ§ μλλ€κ³ μκ°ν©λλ€.
μκ°μ μ¬μ©νλ κ²μ μλ²½νκ² μ ν¨ν©λλ€. μκ°μ μ§λ ν€λ‘ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μ ν¨ν μ½λμ λν΄μλ λ무 μλλ½λ€κ³ μκ°ν©λλ€.
κ·Έλ¬λ λκ΅°κ° GitHubμμ λͺ νΌμΌνΈμ μκ°μ νμΈνκΈ° μν΄ λΆμμ ν μ μμ΅λλ€. μκ° ν€ λ§΅μ΄ μ ν¨ν©λλ€.