Golang中字符串如何转换为bigInt
Golang中字符串如何转换为bigInt
我正在尝试使用 big.SetString 方法将字符串转换为 big.Int,但在以下代码中遇到了错误:
package main
import (
"fmt"
"math/big"
"strings"
)
func main() {
var val = "100su"
if val[len(val)-2:] == "su" {
val = strings.TrimSuffix(val, "su")
fmt.Println(val)
if _, failed := new(big.Int).SetString(val, 10); failed {
fmt.Println("error")
return
}
fmt.Println("succeed")
return
}
}
以下是输出结果:
100
error
正如预期的那样,提供的字符串只是一个数字,但在尝试转换该数字时却失败了。
如有任何帮助,将不胜感激。
诚挚地,
更多关于Golang中字符串如何转换为bigInt的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
if _, failed := new(big.Int).SetString(val, 10); failed {
应该是
if _, ok := new(big.Int).SetString(val, 10); !ok {
返回的布尔值在成功时为 true
更多关于Golang中字符串如何转换为bigInt的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
问题在于,在调用 SetString 方法时,您使用了 new(big.Int) 创建了一个新的 big.Int 实例,但没有将其赋值给变量。因此,即使转换成功,您也无法访问转换后的值,并且代码逻辑会错误地报告失败。实际上,SetString 方法在成功时会返回 true,但您没有正确检查返回值或使用转换后的 big.Int 对象。
以下是修正后的代码示例,它正确地将字符串转换为 big.Int 并处理转换结果:
package main
import (
"fmt"
"math/big"
"strings"
)
func main() {
var val = "100su"
if val[len(val)-2:] == "su" {
val = strings.TrimSuffix(val, "su")
fmt.Println(val)
// 创建一个 big.Int 变量来存储转换结果
bigIntVal := new(big.Int)
// 使用 SetString 方法,并检查转换是否成功
if success := bigIntVal.SetString(val, 10); !success {
fmt.Println("error: failed to convert string to big.Int")
return
}
fmt.Printf("succeed: converted value is %v\n", bigIntVal)
return
}
}
输出结果:
100
succeed: converted value is 100
在这个修正版本中:
- 我们首先创建了一个
big.Int实例bigIntVal。 - 然后调用
SetString方法,并将返回值(一个布尔值)存储在success变量中。 - 如果转换成功(
success为true),我们打印成功消息和转换后的值;否则,打印错误消息。
这样,代码能够正确地将字符串 “100” 转换为 big.Int 类型,并输出结果。

