使用此代码段,为什么它允许接口{}传递到函数而不是[]接口。那有什么区别?我知道错误说的是什么(已将其评论到函数中),但我不确定错误的含义。
https://play.golang.org/p/689R_5dswFX
<script type="text/javascript">
function getSessionName(){
var name='<%=session.getAttribute("uname")%>';
alert(name);
}</script>
答案 0 :(得分:2)
类型interface{}
可以用作非常通用的类型,允许为其分配任何其他类型。
因此,如果某个函数收到interface{}
,您可以将任何值传递给它。
这是因为在Go中,对于满足接口的类型,它必须实现接口声明的所有方法。
由于interface{}
是一个空接口,任何类型都会满足它。
另一方面,对于满足[]interface{}
的类型,它必须是空接口的实际片段。
因此,如果您需要可以接收任何值的通用函数,只需使用示例中显示的interface{}
。
请注意,interface{}
将允许您传入值或指针引用,因此您可以将指针或值隐约传递给该函数。