Go 之基础速学 (十二) golang 的一些小总结
总结:
1.
结构体ServiceFactory定义好之后 我们一方面可以在结构体内部定义属性 第二方面我们可以将结构体理解为类文件,然后下边的func (sf ServiceFactory) Create(name string) IService {} 可以理解为结构体也就是“类”里面的方法
func(sf ServiceFactory) 这里面的ServiceFactory如果不要求是指针类型 也就是说不是ServiceFactory的时候 那么我们在外边就可以直接services.ServiceFactory{}.Create(“one”)来调用 表示services包里面的ServiceFactory类下边的Create()方法
如果func(sf *ServiceFactory) *ServiceFactory表示要求传入的是指针类型 那么我们在外边调用的时候就需要传入指针类型了比如:
(&services.ServiceFactory{}).Create(“one”)
或者
new(services.ServiceFactory).Create(“one”)
要记住
new()是初始化 有了内存地址 但是内存块当中还是空的
*name 表示类型 指针类型 指针指向内存的地址 要求是name指针类型那么就要传递指针进去那么就要new()
&name 表示获取内存地址也就是指针,因为指针指向内存地址 所以*name要求传递指针的时候要么new()要么&name传内存地址type ServiceFactory struct { } func (sf ServiceFactory) Create(name string) IService { switch name { case "one": return &IServiceOne{} case "two": return &IServiceTwo{} default: return nil } }
2.
services包里面的所有文件里面的函数,结构体都可以通过services.xxx获取到!但是结构体里面的方法是无法直接获取到的,得通过结构体来获取
比如:services.ServiceFactory{}.Create(“one”)
本作品采用《CC 协议》,转载必须注明作者和本文链接