登录
首页 >  Golang >  Go问答

接口的通用和非通用使用有什么区别?

来源:stackoverflow

时间:2024-04-17 17:03:32 141浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《接口的通用和非通用使用有什么区别?》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

在新的类型参数设计草案中,您现在可以将接口约束应用于通用函数:

func prettyprint[t stringer](s t) string {
    ...
}

但是,通过使用不带泛型的接口参数,这已经是可能的:

func prettyPrint(s Stringer) string {
    ...
}

使用第一个和使用第二个有什么区别?


解决方案


我假设问题指的是 Type Parameters proposal 的最新草案,即 may end up in Go in 1.18

第一个是参数多态性。编译器验证是否满足约束,然后生成采用静态已知类型的代码。重要的是,it's not boxed

第二个是运行时多态性。它采用编译时未知的类型(唯一已知的是它实现了接口)并在 boxed interface pointer 上工作。

除了性能考虑之外,在这个简单的情况下,您可以使用任一方法。泛型确实有助于解决 current tools don't work well 等更复杂的情况。

以上就是《接口的通用和非通用使用有什么区别?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>