最近接触go语言 发现和java的方法调用有些类似但又有自己的注意点
go的包我理解为则是隔离的最小模块
先在src目录下创建main.go文件 package为main,然后在src下创建module1目录 ,在module1目录下创建两个文件packageStrut.go,packageStrut2.go package均为module1
创建后如下
1.同一个module下方法和声明不能重复
例如packageStrut.go中声明如下方法与结构
package module1
import "time"
type People struct {
UserName string
PassWord string
}
func NowTime() time.Time {
return time.Now()
}
然后在packageStrut2.go中重复声明会直接报错
2.同一个包下面方法和声明调用可以直接通过方法名
例如修改packageStrut2.go的方法直接调用packageStrut中NowTime方法,将上面的冲突packageStrut2中冲突的People修改为Person后冲突消失,新建的Person实例
3.调用不同的包下的方法和声明只能调用方法名首字母大写的方法
例如先将packageStrut2中的GetNanoTime()方法首字母改为小写,然后在main.go中分别调用packageStrut的NowTime()方法和packageStrut2修改后的getNanoTime()方法 ,前者会成功,后者则会编译报错
类也是一致,如果将packageStrut2中的Person改为person ,则这个person只对同包下是可见的,编译也会报错