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

如何在golang中构建有效的标识符名称?,go,Go,我试图在代码中使用GoLinter提供的功能之一。如果在go中使用诸如GetId或ServiceUrl之类的名称,则linter会警告您该名称应为GetId或ServiceUrl。如何在代码中实现相同的功能。 例如,如果在我的I代码中有一个字符串GetId,那么在本例中如何将其转换为与golang兼容的标识符GetId。GetId、GetId和ServeURL的名称都是有效的,它们只是不符合样式。名称getId应更改为getId以遵循指导原则。有关这些名称的更多信息,请参阅指南部分 不提供API

我试图在代码中使用GoLinter提供的功能之一。如果在go中使用诸如GetId或ServiceUrl之类的名称,则linter会警告您该名称应为GetId或ServiceUrl。如何在代码中实现相同的功能。 例如,如果在我的I代码中有一个字符串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
}
函数调用checkNamegetId返回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
}

函数调用checkNamegetId返回getID。

没错!给定一个字符串,我如何通过编程将其转换为另一个遵循指导原则的字符串?第一句话非常重要。不要把最佳实践误认为是有效的。你是对的!给定一个字符串,我如何通过编程将其转换为另一个遵循指导原则的字符串?第一句话非常重要。不要把最佳实践误认为是有效的。