gpt4 book ai didi

object - 在golang中如何确保在创建对象后使用方法?

转载 作者:IT王子 更新时间:2023-10-29 00:39:06 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com