Go 中基本类型的方法定义:一种设计选择
Go 社区中常见的一个问题是围绕定义字符串背后的原理展开的函数位于单独的包中,而不是直接位于字符串数据类型上。这一设计决策引发了有关自定义字符串类型和内置函数可访问性的讨论。
为什么不直接在字符串类型上定义方法?
定义字符串的主要原因strings 包中的函数是为了保持语言的简单性。 Go 的设计不允许在语言本身之外定义的基本类型上定义方法。由于字符串就是这样一种类型,因此向其添加方法需要对语言/编译器进行大量修改。
自定义字符串类型和方法可访问性
自定义字符串类型无法实现的问题访问内置函数是没有根据的。虽然自定义字符串类型可以扩展字符串,但它们无法定义覆盖内置函数的方法。这是因为语言设计只允许同一包内的类型上的方法。
Go 创建者的支持证据
Go 创建者的声明进一步巩固了这一设计决策Rob Pike:
基于库的字符串函数的好处
除了语言简单性之外,字符串包提供了几个优点:
以上是为什么 Go 将字符串函数单独放入'strings”包中,而不是直接在'string”类型上定义方法?的详细内容。更多信息请关注PHP中文网其他相关文章!