为了账号安全,请及时绑定邮箱和手机立即绑定

不能引用未导出的名称 m.β

不能引用未导出的名称 m.β

Go
FFIVE 2021-08-10 20:44:48
看看这两个简单的包:package mconst β = 1package mainimport ("m";"fmt")func main() {    fmt.Println(m.β)}当我尝试编译它们时出现此错误:$ GOPATH=`pwd` go run a.go # command-line-arguments./a.go:4: cannot refer to unexported name m.β./a.go:4: undefined: m.β为什么?我尝试在两个包中用 B 替换 β ,它有效,但我试图在这里使用正确的符号。也许两个包出于某种原因都使用同形文字或不同的编码?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

β 是小写的,所以它不会被导出,也不能从包外使用。

fmt.Println(unicode.IsLower('β'))

playground


查看完整回答
反对 回复 2021-08-10
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

导出标识符名称的第一个字符必须是 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

Go 编程语言规范


导出的标识符


可以导出标识符以允许从另一个包访问它。如果同时满足以下条件,则会导出标识符:


标识符名称的第一个字符是 Unicode 大写字母(Unicode 类“Lu”);和

标识符在包块中声明,或者它是字段名称或方法名称。

不导出所有其他标识符。


查看完整回答
反对 回复 2021-08-10
  • 3 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号