我有一个 struct
,我有一个我编写的 new
方法,它生成对象并返回它的指针。
现在我还有另一个方法,例如 Close
,但截至目前,创建对象后调用此方法不是强制性的。我想确保在创建对象时必须调用此方法。我如何在 Golang 中做到这一点?如果可能的话,我也不知道这叫什么。请帮忙。谢谢。
最佳答案
无法强制调用 Close()
方法。您能做的最好的事情就是清楚地记录下来,如果不再需要您的类型的值,则必须调用其 Close()
方法。
在程序被强行终止的极端情况下,您无法保证任何代码都会运行。
请注意,有一个 runtime.SetFinalizer()
允许您注册一个函数,当垃圾收集器发现无法访问的值/ block 时将调用该函数。但是要知道,不能保证你注册的函数会在程序退出之前运行。引用其文档:
There is no guarantee that finalizers will run before a program exits, so typically they are useful only for releasing non-memory resources associated with an object during a long-running program.
您可以选择不导出您的类型,并提供一个导出的构造函数,例如 NewMyType()
,您可以在其中正确初始化您的结构/类型。你不能强制别人在他们用完你的值后调用它的 Close()
方法,但至少你可以不用担心初始化不正确。
关于object - 在golang中如何确保在创建对象后使用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36826232/