• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go:结构体的可访问性

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.要使某个符号对其他包( package)可见(即可以访问),需要将该符号定义为以大写字母开头------摘自go相关书籍
2.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。

  结论:同包内,结构体变量的成员变量可随时被访问,不受首字母大小写的影响(即便成员变量小写,也可被直接访问,而不需要通过成员函数来实现)。 

  

 

 

 

 

  

 

 

  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
liteidego:cannotfindGOROOTdirectory:错误解决发布时间:2022-07-10
下一篇:
Go语言,编译时不生成bin目录的原因发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap