理解变量和函数返回值行为的差异
在提供的代码中,目的是连接两行代码执行特定操作。然而,第二次尝试会出现错误。
第二种情况出现错误
错误消息“models/models.go:104: invalid operation sha1. Sum(([]byte)(uf.Pwd))[:] (slice of unaddressable value)" 表明第二种情况下的切片存在问题。具体来说,尝试对函数调用 sha1.Sum() 的返回值进行切片会导致问题。
问题原因
Go 中的函数返回值是不可寻址,这意味着它们不能用作需要可寻址的操作中的操作数。在这种情况下,对数组进行切片需要数组可寻址。
函数返回值
Go 中只有以下实体是可寻址的:
解决方案和第一种情况
第一种情况可以正常工作,因为 sha1.Sum() 的返回值首先存储在可寻址的局部变量(哈希)中。这个局部变量可以在后续操作中使用,包括切片。
结论
为了避免像第二种情况中遇到的错误,理解这一点很重要Go 中的可寻址规则。函数返回值不可寻址,切片要求数组操作数可寻址。
以上是为什么我不能在 Go 中分割函数的返回值?的详细内容。更多信息请关注PHP中文网其他相关文章!