我想加入两行,但收到错误消息。原来的:hash := sha1.Sum([]byte(uf.Pwd))
u.Pwhash = hex.EncodeToString(hash[:])联合的:u.Pwhash = hex.EncodeToString(sha1.Sum([]byte(uf.Pwd))[:])第一个工作正常,第二个产生错误消息:models/models.go:104: invalid operation sha1.Sum(([]byte)(uf.Pwd))[:] (slice of unaddressable value)这是为什么?
1 回答
HUH函数
TA贡献1836条经验 获得超4个赞
在第二种情况下您会收到一条错误消息,因为您尝试对函数调用的返回值(即sha1.Sum()
)进行切片:
sha1.Sum(([]byte)(uf.Pwd))[:]
函数调用的返回值是不可寻址的。提醒一下,(仅)以下是可寻址的(取自Spec: Address operators):
...变量、指针间接或切片索引操作;或可寻址结构操作数的字段选择器;或可寻址数组的数组索引操作。作为可寻址性要求的一个例外,
x
也可能是(可能带括号的)复合文字。
对数组进行切片需要该数组是可寻址的。规格:切片表达式:
如果切片操作数是一个数组,它必须是可寻址的,并且切片操作的结果是一个与数组具有相同元素类型的切片。
您的第一种情况有效,因为您首先将返回的数组存储在可寻址的局部变量中。
切片数组要求数组可寻址,因为切片会生成一个切片,该切片不会复制数组的数据,但会创建一个共享后备数组且仅指向/引用它的切片。
- 1 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消