Go语言中自定义类型方法的策略:包装与扩展
Go语言方法绑定的原则:不可重定义性
go语言的设计哲学之一是简洁性和明确性。在方法绑定方面,go遵循严格的规则:方法是绑定到其声明的类型和包的。 这意味着一旦一个方法(如 string())被定义在某个类型(如 bytesize)上,并且该类型及其方法在一个包中被导出,其他包就无法直接“重写”或“重定义”这个方法。
考虑以下 ByteSize 类型的定义及其 String() 方法:
package mytypes import "fmt" type ByteSize float64 const ( _ = iota KB ByteSize = 1 << (10 * iota) MB GB TB PB YB ) func (b ByteSize) String() string { switch { case b >= YB: return fmt.Sprintf("%.2fYB", b/YB) case b >= PB: return fmt.Sprintf("%.2fPB", b/PB) case b >= TB: return fmt.Sprintf("%.2fTB", b/TB) case b >= GB: return fmt.Sprintf("%.2fGB", b/GB) case b >= MB: return fmt.Sprintf("%.2fMB", b/MB) case b >= KB: return fmt.Sprintf("%.2fKB", b/KB) } return fmt.Sprintf("%.2fB", b) }
登录后复制
文章作者:磁力搜索
文章标题:Go语言中自定义类型方法的策略:包装与扩展
文章链接:https://www.onehaoka.com/6073.html
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自磁力搜索 !
文章标题:Go语言中自定义类型方法的策略:包装与扩展
文章链接:https://www.onehaoka.com/6073.html
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自磁力搜索 !
还没收到回复