如何在golang中建立有效的标识符名称?

时间:2018-12-04 02:37:44

标签: go

我正在尝试在代码中使用go linter提供的功能。如果您在旅途中使用GetIdServiceUrl之类的名称,短绒棉绒警告您该名称应为GetIDServiceURL。我如何在代码中实现相同的目的。 例如,如果我的代码中有一个字符串GetId,如何将其转换为与golang兼容的标识符(在这种情况下为GetID)。

1 个答案:

答案 0 :(得分:4)

名称GetIdgetIdServeURL均有效,只是不遵循样式guidelines。名称getId应更改为getID以遵循准则。有关这些名称的更多信息,请参见准则的initialisms部分。

lint package不提供用于获取标识符替换文本的API。但是,可以用标识符构造一个源文件,将其提供给linter并解析问题。像这样:

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"