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”)
Go 之基础速学 (十二) golang 的一些小总结
Go 之基础速学 (十二) golang 的一些小总结

本作品采用《CC 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!