m := map[int]string{1: "one"}m.delete(1)
是一个编译时错误,可以轻松验证。
2-
Go没有泛型。但是为了缓解“痛苦”,它提供了一些内置函数,可以接受不同类型的值。它们是内置的,因为(如上所述)由于缺少泛型,它们需要编译器的帮助才能接受不同类型的值。有些人还接受类型而不是表达式作为第一个参数(例如
make([]int,1)),这也是您不能创建的。内置函数没有标准的Go类型,它们只能出现在调用表达式中。
您不能创建接受不同类型值的函数。话虽如此,当您创建自己的类型并为其创建“函数”时,建议将其声明为方法而不是辅助函数。就像“功能”在您的具体类型上运行一样,无论如何您都不能将其用于其他类型。
因此,将其声明为方法是有意义的,然后您可以更“优雅地”调用它,例如
value.Method()
作为一种方法,如果您需要实现一个接口,则也“算在内”
该类型的方法集,例如,在您需要实现一个接口的情况下,能够对列表进行排序是
MyCoollinkedList有意义的,例如
sort.Interface,这需要一个
Len()int方法。
在辅助函数上选择方法的另一个好处是,可以通过反射来使用您的方法。您可以使用该
reflect程序包列出和调用某种类型的方法,但使用“
just”函数则无法做到这一点。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)