Unicode 不能引用未报告的名称m.β;
看看这两个简单的软件包:Unicode 不能引用未报告的名称m.β;,unicode,go,packages,Unicode,Go,Packages,看看这两个简单的软件包: package m const β = 1 当我试图编译它们时,会出现以下错误: $ GOPATH=`pwd` go run a.go # command-line-arguments ./a.go:4: cannot refer to unexported name m.β ./a.go:4: undefined: m.β 为什么??我试着在两个包中用B替换β,这是可行的,但我试着在这里使用正确的符号。可能由于某种原因,这两个包都在使用同形符或不同的编码?β是
package m
const β = 1
当我试图编译它们时,会出现以下错误:
$ GOPATH=`pwd` go run a.go
# command-line-arguments
./a.go:4: cannot refer to unexported name m.β
./a.go:4: undefined: m.β
为什么??我试着在两个包中用B替换β,这是可行的,但我试着在这里使用正确的符号。可能由于某种原因,这两个包都在使用同形符或不同的编码?β是小写的,因此它不会导出,也不能从该包外部使用
fmt.Println(unicode.IsLower('β'))
导出包中的函数、方法需要以大写字母开头。昨天遇到了同样的问题go规范说,如果 标识符名称的第一个字符是Unicode大写 字母(Unicode类“Lu”) 返回
false
导出标识符名称的第一个字符必须是Unicode大写字母。比如说,
package main
import (
"fmt"
"unicode"
)
const Β = 1
func main() {
const (
GreekLowerβ = 'β'
GreekUpperΒ = 'Β'
)
fmt.Println(GreekLowerβ, unicode.IsUpper(GreekLowerβ))
fmt.Println(GreekUpperΒ, unicode.IsUpper(GreekUpperΒ))
}
输出:
946 false
914 true
可以导出标识符以允许从另一个标识符访问它 包裹如果出现以下两种情况,则导出标识符:
:Ββbeta看起来大写me@Dog不是,如果你认为这是一个bug,你应该报告它。只是在golang nuts邮件列表上打开了一个线程。显然β是一个小写字母,只允许大写标识符;)
package main
import (
"fmt"
"unicode"
)
const Β = 1
func main() {
const (
GreekLowerβ = 'β'
GreekUpperΒ = 'Β'
)
fmt.Println(GreekLowerβ, unicode.IsUpper(GreekLowerβ))
fmt.Println(GreekUpperΒ, unicode.IsUpper(GreekUpperΒ))
}
946 false
914 true