当前位置: 首页 > 面试题库 >

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

田柏
2023-03-14
问题内容

我有一个struct,并且有一个new我编写的方法,该方法生成对象并返回其指针。

现在,我还有另一个方法,例如,Close但是到目前为止,创建对象后并不一定要调用此方法。我想确保如果创建了对象,则必须调用此方法。如何在Golang中做到这一点?如果可能的话,我也不知道这是什么。请帮忙。谢谢。


问题答案:

无法强制调用Close()方法。最好的办法就是清楚地记录下来,如果不再需要类型的值,则Close()必须调用其方法。

在极端情况下,如果程序被强制终止,则不能保证任何代码都会运行。

请注意,有一个runtime.SetFinalizer()函数允许您注册一个函数,当垃圾回收器发现值/块不可访问时将调用该函数。但是请注意,不能保证您注册的功能将在程序退出之前运行。引用其文档:

无法保证终结器会在程序退出之前运行,因此通常它们仅对在长时间运行的程序期间释放与对象关联的非内存资源有用。

一个好的设计是使您的类型不导出,但是提供一个导出的构造函数,例如NewMyType(),您可以在其中正确地初始化struct
/类型。还返回接口类型而不是具体类型,并且该接口应包含其他人希望对您的值进行的操作。当然,您的具体类型必须实现该接口。Close()当值完成后,您不能强迫其他人调用它的方法,但是至少您可以停止担心初始化不当。



 类似资料:
  • 问题内容: 我有一个需要将对象数组存储在变量中的要求。对象是不同类型的。请参考以下示例: 注意第二个元素是字符串本身的数组。经过研究,我想将其存储为以下接口类型: 尽管如此,我还是遇到了一些无法找到的编译错误。 问题答案: 您要的是可能的- 游乐场链接: 但是您可能不想这样做。您正在与类型系统进行斗争,如果您这样做,我会质疑您为什么要使用Go。考虑利用类型系统- 游乐场链接:

  • 问题内容: 仅在字符串中具有对象类型时,如何创建对象?我正在寻找类似的东西: 当使用不同的ORM库(例如GORP和GORM)时,这将非常有用和方便。 可以在Golang中做到吗? 问题答案: 没有… 好吧,答案是“是,但是”,但是很大。Go中没有结构名称的中央注册表。您不会得到一个很好的,干净的标准库函数,该函数可能正是您所希望的。 相反,您必须自己编写映射,例如

  • 问题内容: 我需要使用NDK以及JNI将一些功能实现到Android应用程序中。 这是我所写的C代码: 我的问题或多或少在代码内得到了解释。也许还可以:函数(jobject)的返回类型可以吗? 现在,NDKTest.java: 当我尝试运行代码时,它不起作用。 问题答案: 既然是内部类,那么获得它的方法就是 内部类的约定在权威规范中并未真正明确记录,但是根深蒂固地存在于如此多的工作代码中,因此不太

  • 问题内容: 我不知道最好的方法是创建具有属性和方法的JavaScript对象。 我看过一些示例,该示例中的人员使用然后在所有功能中使用以确保范围始终正确。 然后,我看到了用于添加属性的示例,而其他示例则是内联的。 有人可以给我一个带有某些属性和方法的JavaScript对象的正确示例吗? 问题答案: 有两种用于在JavaScript中实现类和实例的模型:原型方式和闭包方式。两者都有优点和缺点,并且

  • 不过就是创建结构体的时候,根据每个对象的特征赋值不同的属性罢了 // 3.创建一个结构体变量 p1 := Person{"lnj", 33} per.say() p2 := Person{"zs", 18} per.Say()

  • 问题内容: 我想使用String创建一个JSON对象。 示例:JSON 为了创建上述JSON,我正在使用它。 我想知道如何创建一个具有JSON数组的JSON。 以下是示例JSON。 谢谢。 问题答案: 可能就是您想要的。