2

我是新手,已经开始玩A Tour of Go 了。我注意到一个特点,即我可以命名一个函数_,但不能调用该函数:

import "fmt"

type sel struct {
    s string
}

func _(s string) sel {
    return sel{s}
}

func main() {
    fmt.Println("Hello")
    _("foo") // <-- does not compile
}

如果我评论整_("foo")行,那么程序就会编译。

我的问题是函数名中允许使用哪些字符?它只是字母数字字符还是我可以使用$

命名其他事物(例如结构、接口等)的规则是否与函数的命名规则相同?

4

2 回答 2

10

规格

由下划线字符 _ 表示的空白标识符可以像任何其他标识符一样在声明中使用,但该声明不会引入新的绑定。

这解释了为什么代码有效但您无法调用调用的函数_

_当你想分配一个变量但忽略它时,在 Go 中使用。调用函数 _ 也是一样的——你定义了它,但编译器会忽略它。

于 2012-07-27T16:22:15.357 回答
6

规范规定 func、var 或 const 名称必须unicode_letter(或)开头_,并且可以以任何 (unicode_letterunicode_digit)结尾_

unicode_letter如果您愿意,可以是中文或希伯来文字母。

于 2012-07-27T14:26:45.600 回答