永发信息网

golang中interface如何传参?

答案:2  悬赏:0  手机版
解决时间 2021-03-17 03:23
golang中interface如何传参?
最佳答案
Golang的interface,和别的语言是不同的。它不需要显式的implements,只要某个struct实现了interface里的所有函数,编译器会自动认为它实现了这个interface。
  SICP里详细解释了为什么同一个接口,需要根据不同的数据类型,有不同的实现;以及如何做到这一点。在这里没有OO的概念,先把OO放到一边,从原理上看一下这是怎么做到的。
  先把大概原理放在这里,然后再举例子。为了实现多态,需要维护一张全局的查找表,它的功能是根据类型名和方法名,返回对应的函数入口。当我增加了一种类型,需要把新类型的名字、相应的方法名和实际函数入口添加到表里。这基本上就是所谓的动态绑定了,类似于C++里的vtable。对于SICP中使用的lisp语言来说,这些工作需要手动完成。而对于java,则通过implements完成了这项工作。而golang则用了更加激进的方式,连implements都省了,编译器自动发现自动绑定。
全部回答
给你个fmt.Printf的例子:
echo 函数不定参数,其调用fmt.Printf进行输出,因为v是一个slice,所以传递给fmt.Printf的时候需要 v...,就类似append(slice1,slice2...)
package main
import (
"fmt"
)
func main() {
echo("Hello %s, I am %s\n", "Bob", "John")
}
func echo(format string, v ... interface{}) {
fmt.Printf(format, v...)
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问网上哪里的二手手机最便宜,除了淘宝
龙威公馆地址在什么地方,想过去办事
中国上班族每个人每个月平均工资有多少
在世界名著里中国的红楼梦有一席之地么?
试简要叙述水的比热较大在农业生产中的应用.
聚折良品怎么赚米花
有些痘痘为什么久治不愈,还反反复复
电磁炉线圈底部塑料外壳烧焦是怎么回事
意大利油漆renner什么意思
山岳崩颓,既履危亡之运,春秋迭代,必有去故之
在文言文中与 皆(全,都) 用法相同的字
新潮大众热水浴地址在什么地方,想过去办事
自来水、煤气、电力、电信和铁路运输等行业之
上海昌华石材有限公司怎么样?
购卖秦腔板胡什么调好
推荐资讯
汤灿和范冰冰谁长得漂亮啊
福词有哪些词语
火星为什么被称为地球兄弟
用手和用脚投票 用英语怎么说
博士生和科学家有多大的差距?
路由器状态判断
三星s5830i开机键在哪里
黄鹤楼送送孟浩然之广陵这首诗描写了什么表达
口里香碳烤羊腿金平路店我想知道这个在什么地
1997年阳历12月1日农历是多少
几乎所有焦虑都出自一个根源 那就是 绝不允许
ASP只用一个提交按钮提交多个表
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?