我正在尝试在代码中使用go linter提供的功能。如果您在旅途中使用GetId
或ServiceUrl
之类的名称,短绒棉绒警告您该名称应为GetID
或ServiceURL
。我如何在代码中实现相同的目的。
例如,如果我的代码中有一个字符串GetId
,如何将其转换为与golang兼容的标识符(在这种情况下为GetID
)。
答案 0 :(得分:4)
名称GetId
,getId
和ServeURL
均有效,只是不遵循样式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"
。