golang

作者: voidfantasy | 来源:发表于2018-06-09 00:31 被阅读0次

                            golang中闭包的问题

        熟悉go语言的开发者都知道,go的闭包是可以记录状态的。当我想用闭包来实现保存某一string切片的值,在想要的地方调用时,有如下代码:

图(1)

        预想是通过遍历strs,用闭包保存当前value的值来实现需求。而执行的结果却是4个d,而不是我想要的abcd。

        闭包并没有按照预期保存当前value的值,而是保存了执行完遍历value的值。闭包执行打印时,用的是最后一次遍历时value的值,所以执行的结果是4个d。

        所以在结果这类问题时,通常加入一个临时变量记录value的值。

图(2)

在闭包里打印临时变量的值,这样的话结果就是abcd。

相关文章

网友评论

    本文标题:golang

    本文链接:https://www.haomeiwen.com/subject/utflsftx.html