在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.要使某个符号对其他包( package)可见(即可以访问),需要将该符号定义为以大写字母开头------摘自go相关书籍
本文讨论结构体三个部分的可访问性:结构体本身、结构体变量、结构体变量的成员变量 在讨论某一部分时,保证其它部分包外可访问。
1. 结构体本身 的可访问性 test1.go: package tt type Test struct { X int } main.go: package main import ( "fmt" "tt" ) var a = &tt.Test{X: 5} func main() { fmt.Println(a) } //编译成功,输出: // &{5} 若将test1.go中的结构体"Test"改为"test",则编译错误,提示"test"不可访问。 注:修改"Test"时同时修改main.go相关代码,后续测试中默认进行修改,不再强调。 结论:结构体名的大小写影响结构体本身的可访问性,首字母小写则包外不可见(如定义结构体"test",则不能在包外定义该"test"类型的结构体变量)
2.结构体变量 test1.go package tt type Test struct { X int } var t Test main.go package main import ( "fmt" "tt" ) func main() { fmt.Println(tt.t) } 编译错误,提示tt.t不可访问;将结构体变量"t"改为"T"后,程序正常运行,输出 {0} 结论:同上,结构体变量名的首字母大小写 将影响其在包外的可访问性。
3.结构体变量的成员变量 1)不同包 test1.go package tt type test struct { x int } var T test main.go package main import ( "fmt" "tt" ) func main() { fmt.Println(tt.T.x) } 编译错误,提示tt.T.x不可访问;将T成员变量"x"改为"X"后,程序正常运行,输出 0 结论:同上。 2)同包 package main import ( "fmt" ) type test struct { x int } func main() { t := new(test) fmt.Println(t.x) } 程序正常运行,输出 0。 结论:同包内,结构体变量的成员变量可随时被访问,不受首字母大小写的影响(即便成员变量小写,也可被直接访问,而不需要通过成员函数来实现)。
|
请发表评论