在go中装饰基本数据类型

lok*_*100 -3 go

我正在开始新的应用程序.

我知道我们不能修补补丁去代码.因此,如果我们想要使用基本数据类型(如int,float,string等)进行一些攻击,那么它是不可能的.

所以,我正在考虑为这些基本的东西创建新类型,并通过应用程序而不是基本的东西使用它们.稍后如果我们想要覆盖其中一些方法或者我们想要添加一些新方法,我们可以覆盖这些新类型.

这是好事吗?

以下是示例代码:

type NewInt Int
Run Code Online (Sandbox Code Playgroud)

要么

type NewInt struct{
    Int
}
Run Code Online (Sandbox Code Playgroud)

在这里,如果我正在创建一个变量var test NewInt = 16,它会通过创建内存问题在内部创建2个对象(一个用于基本int,另一个用于newint)?或者它会同时使用相同的对象?

我该如何调试这个场景?如何在创建变量后收集堆中的所有现有对象?

Zak*_*Zak 6

我认为你走下去的根本途径会给你带来麻烦.

您不应该真正包装/模拟原始数据类型,例如int,string等等.而是创建更高级别的抽象; 以接口的形式.

你提到需要在你的新类型上"覆盖一些方法"; 但这应该在接口级别而不是数据类型级别完成.

你还会发现它太多难以消耗任何其他去包,你会不断地从转换NewInt到int传递到其他包.

如果你提供的一个例子,当你打算使用的NewInt类型的数据类型,那么我可以提供如何使用界面做它,而不是一个例子.