定义一个包a,里面定义一个数据结构
type s1 struct{
X,y int
}
type S2 struct{
X,y int
}
然后在另外一个包里面使用
st1:=a.s1{1,2}
st2:=a.S2{3,4}
编译错误:
cannot refer to unexported name a.s1
注释掉第一行,在编译:
implicit assignment of unexported field 'y' in a.S2 literal
这里有个坑,就是go语言使用了强制的约定:大写字母开头的,相当于是public,到处可用;小写字母开头的,相当于private,只有包内可用。
这种做法的好处是,显得更简洁,省去了public这样的关键字。统一了程序的书写风格,即使有不同编程风格的人一起写代码,风格也会变得统一。