我正在尝试在代码中使用go linter提供的功能。如果您使用类似GetId或ServiceUrlin 的名称,则短绒棉绒警告您该名称应为GetID或ServiceURL。我如何在代码中实现相同的目的。例如,如果我的代码中有一个string GetId,如何将其转换为与golang兼容的标识符(在这种情况下GetID)。
该名称GetId,getId并且ServeURL都是有效的,他们只是不遵循风格指引。名称getId应更改getID为遵循准则。有关这些名称的更多信息,请参见准则的首字母缩写部分。
该皮棉包没有提供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
}
Run Code Online (Sandbox Code Playgroud)
函数调用checkName("getId")返回"getID"。