在Golang中传递接口{}或[]接口{}

时间:2018-05-10 15:00:26

标签: go interface

使用此代码段,为什么它允许接口{}传递到函数而不是[]接口。那有什么区别?我知道错误说的是什么(已将其评论到函数中),但我不确定错误的含义。

https://play.golang.org/p/689R_5dswFX

<script type="text/javascript">
function getSessionName(){
var name='<%=session.getAttribute("uname")%>';
alert(name);
}</script>

1 个答案:

答案 0 :(得分:2)

类型interface{}可以用作非常通用的类型,允许为其分配任何其他类型。

因此,如果某个函数收到interface{},您可以将任何值传递给它。

这是因为在Go中,对于满足接口的类型,它必须实现接口声明的所有方法。

由于interface{}是一个空接口,任何类型都会满足它。

另一方面,对于满足[]interface{}的类型,它必须是空接口的实际片段。

因此,如果您需要可以接收任何值的通用函数,只需使用示例中显示的interface{}

请注意,interface{}将允许您传入值或指针引用,因此您可以将指针或值隐约传递给该函数。