Как построить действительные имена идентификаторов в Голанге? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь использовать функциональность, предоставляемую go linter в моем коде.Если вы используете имя, подобное GetId или ServiceUrl, go linter предупредит вас, что имя должно быть GetID или ServiceURL.Как я могу добиться того же в моем коде.Например, если в моем коде I есть строка GetId, как я могу преобразовать ее в совместимый с golang идентификатор (в данном случае GetID).

1 Ответ

0 голосов
/ 04 декабря 2018

Имена GetId, getId и ServeURL действительны, они просто не соответствуют стилю рекомендациям .Имя getId должно быть изменено на getID в соответствии с указаниями.Дополнительную информацию об этих именах см. В разделе руководств initialisms .

пакет lint не предоставляет API для получения заменяющего текста для идентификатора.Тем не менее, можно создать исходный файл с идентификатором, передать его линтеру и проанализировать проблему.Примерно так:

import (
    "bytes"
    "fmt"
    "golang.org/x/lint"
    "strings"
)

func checkName(s string) (string, error) {
    var buf bytes.Buffer
    fmt.Fprintf(&buf, "// Package main is awesome\npackage main\n// %s is wonderful\nvar %s int\n", s, s)
    var l lint.Linter
    problems, err := l.Lint("", buf.Bytes())
    if err != nil {
        return "", err
    }
    if len(problems) >= 1 {
        t := problems[0].Text
        if i := strings.Index(t, " should be "); i >= 0 {
            return t[i+len(" should be "):], nil
        }
    }
    return "", nil
}

Вызов функции checkName("getId") возвращает "getID".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...