Go: الاقتراح: cmd / vet: يجب أن يحذر الطبيب البيطري عندما يتم استخدام نوع الوقت (أو أنواع تضمينه) كمفاتيح خرائط.

تم إنشاؤها على ٤ ديسمبر ٢٠١٧  ·  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.

مثل الوقت ، قد يكون هناك بعض الأنواع الأخرى التي لا يمكن استخدامها كأنواع مفاتيح الخريطة.

ماذا رأيت بدلا من ذلك؟

لا شيء يذكر

FrozenDueToAge Proposal

التعليق الأكثر فائدة

لا أعتقد أن هذا يلتقي بالحانة لفحص طبيب بيطري.

من المناسب تمامًا استخدام الوقت ، فالوقت كمفتاح خريطة ، إذا كنت تعرف ما تفعله. أعتقد أنه سيكون مزعجًا جدًا للرمز الصحيح.

لكن يمكن لأي شخص إجراء بعض التحليلات على GitHub لمعرفة النسبة المئوية للوقت. تعد الخرائط ذات المفاتيح الزمنية صالحة.

ال 3 كومينتر

لا أعتقد أن هذا يلتقي بالحانة لفحص طبيب بيطري.

من المناسب تمامًا استخدام الوقت ، فالوقت كمفتاح خريطة ، إذا كنت تعرف ما تفعله. أعتقد أنه سيكون مزعجًا جدًا للرمز الصحيح.

لكن يمكن لأي شخص إجراء بعض التحليلات على GitHub لمعرفة النسبة المئوية للوقت. تعد الخرائط ذات المفاتيح الزمنية صالحة.

لقد كتبت linter يكتشف هذا النوع من المشكلات إذا كنت مهتمًا: https://github.com/m3db/build-tools/blob/master/linters/badtime/README.md

أحاول دمجها مع gometalinter الآن.

الآن بعد أن أصبح الطبيب البيطري جزءًا من اختبار go test ، أصبح الشريط أعلى للفحوصات الجديدة. لأنه _ هو _ في بعض الأحيان أن يكون لديك وقت. الوقت كمفتاح خريطة ، رفضه في الطبيب البيطري ليس جيدًا.

يمكنك التحدث إلى dominikh حول إضافة هذا إلى megacheck أو أحد linters الأخرى.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

michaelsafyan picture michaelsafyan  ·  3تعليقات

longzhizhi picture longzhizhi  ·  3تعليقات

natefinch picture natefinch  ·  3تعليقات

OneOfOne picture OneOfOne  ·  3تعليقات

enoodle picture enoodle  ·  3تعليقات