我試圖將數據存儲區密鑰從 Form 轉換為 int64 ,并在該密鑰的幫助下嘗試更新數據存儲區中的記錄。我嘗試了,但我收到一條錯誤消息:Unable to parse key. strconv.ParseInt: parsing "/Users,6248007768440574": invalid syntax我從表單傳遞的值是 format 的數據存儲鍵/Users,6248007768440574。我意識到語法錯誤就是因為這個。有人可以幫我解決這個問題嗎?或者,是否有一種方法可以將字符串轉換為 *datastore.Key?任何幫助將不勝感激
1 回答

HUX布斯
TA貢獻1876條經驗 獲得超6個贊
ParseInt 返回錯誤,因為字符串"/Users,6248007768440574"
不是整數。子字符串是一個整數,但不是整個字符串。
問題中的字符串是通過調用Key.String創建的。數據存儲包不提供解析此方法輸出的方法。這是一個針對沒有祖先鍵的情況的簡單解析器:
var keyPat = regexp.MustCompile(`^/([^\.]*),(\d+)$`)
func parseKey(s string) (*datastore.Key, error) {
? ? m := keyPat.FindStringSubmatch(s)
? ? i := strings.Index(s, ",")
? ? if i < 0 {
? ? ? ? return nil, errors.New("bad format")
? ? }
? ? n, err := strconv.ParseInt(m[2], 10, 64)
? ? if err != nil {
? ? ? ? return nil, err
? ? }
? ? return datastore.IDKey(m[1], n, nil), nil
}
Encode方法和Decode函數是將密鑰與機器可讀字符串相互轉換的首選方法。
- 1 回答
- 0 關注
- 116 瀏覽
添加回答
舉報
0/150
提交
取消