我有一个struct,在其中我写了一个new方法,它生成对象并返回指针。
现在我还有另一个方法,例如Close,但目前不强制要求调用此方法一旦对象被创建。我想确保如果对象被创建,则此方法必须被调用。在Golang中如何实现这个功能呢?如果可以的话,我不知道这叫什么名字,请帮忙。谢谢。
现在我还有另一个方法,例如Close,但目前不强制要求调用此方法一旦对象被创建。我想确保如果对象被创建,则此方法必须被调用。在Golang中如何实现这个功能呢?如果可以的话,我不知道这叫什么名字,请帮忙。谢谢。
无法强制调用Close()
方法。您所能做的最好办法是明确记录,如果不再需要类型的值,则必须调用其Close()
方法。
在程序被强制终止的极端情况下,您无法保证任何代码都会运行。
请注意,有一个runtime.SetFinalizer()
函数,允许您注册一个函数,在垃圾收集器发现值/块不可达时将调用该函数。但请知道,不能保证您注册的函数将在程序退出之前运行。引用自其文档:
不能保证在程序退出之前会运行终结器,因此它们通常仅在长时间运行的程序中对释放与对象关联的非内存资源有用。
您可以选择使您的类型未导出,并提供一个导出的构造函数,例如NewMyType()
,其中您可以适当地初始化结构体/类型。尽管无法强迫其他人在使用完您的值后调用其Close()
方法,但至少可以停止担心错误的初始化。
object.run()
这样的方法,它会设置一些变量,并且如果没有使用该方法,对象可能会抛出空指针错误,是否有办法强制用户使用.run()
方法? - scott