我来自 Java,在那里你总是做这样的事情:
Http http = new Http(...);
http.ListenAndServe();
因此所有信息都存储在局部变量“http”中。
在go中是不同的。大多数信息直接存储在“另一个包中”。
你这样做:
import "net/http"
...
http.ListenAndServe(...)
因此您不必显式(当然可以)实例化服务器结构。只需从包中调用一个函数,所有结构都会从那里创建。 (所以与Java相比,它的行为就像静态函数一样,使用静态成员变量来存储所有信息?)
那么这就是您(每次)在 go 中的做法?
来自 Java,这有点难以理解。
特别是何时使用此方法,何时使用工厂模式(如:NewHttpServer(...)
)以及何时从另一个包显式创建结构(如:var http http.服务器 = http.Server{...}
)
一切皆有可能,但地道的 golang 代码是什么?
有什么好的文档/教程可以解释它吗?
最佳答案
我不知道是否有一个硬性规定来回答你的问题。当满足以下条件之一时,我通常使用工厂方法:
- 我需要在使用实例之前对属性值进行一些合理性检查;
- 我想使用意外的属性,在这种情况下,解决它们的唯一方法是在同一个包中。
关于go - 何时显式实例化结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46760209/