理解變數和函數回傳值行為的差異
在提供的程式碼中,目的是連接兩行程式碼執行特定操作。然而,第二次嘗試會出現錯誤。
第二種情況出現錯誤
錯誤訊息「models/models.go:104: invalid operation sha1. Sum(([]byte)(uf.Pwd ))[:] (slice of unaddressable value)" 表示第二種情況的切片有問題。具體來說,嘗試對函數呼叫 sha1.Sum() 的傳回值進行切片會導致問題。
問題原因
Go 中的函數傳回值是不可定址,這表示它們不能用作需要可尋址的操作中的運算元。在這種情況下,對數組進行切片需要數組可尋址。
函數傳回值
Go 中只有下列實體是可定址的:
解決方案和第一種情況
第一種情況可以正常工作,因為sha1.Sum() 的回傳值首先儲存在可尋址的局部變數(雜湊)中。這個局部變數可以在後續操作中使用,包括切片。
結論
為了避免像第二種情況中遇到的錯誤,理解這一點很重要Go 中的可尋址規則。函數傳回值不可尋址,切片要求數組運算元可尋址。
以上是為什麼我不能在 Go 中分割函數的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!