【发布时间】:2016-12-25 02:05:14
【问题描述】:
示例输入:(类型:string)
"[156, 100, 713]"
转换示例:(类型:int 的切片)
[156, 100, 713]
【问题讨论】:
-
什么已经尝试过了? stackoverflow.com/help/how-to-ask
示例输入:(类型:string)
"[156, 100, 713]"
转换示例:(类型:int 的切片)
[156, 100, 713]
【问题讨论】:
除了 mhutter 的回答之外,还要注意您的输入 string 看起来像一个 JSON 数组(可能来自 JSON 文本?)。
如果您这样对待它,您可以将其内容解组为 []int 切片。这不会比直接从中解析数字更快(因为encoding/json 包使用反射),但它肯定更简单:
s := "[156, 100, 713]"
var is []int
if err := json.Unmarshal([]byte(s), &is); err != nil {
panic(err)
}
fmt.Println(is)
fmt.Printf("%#v", is)
输出(在Go Playground上试试):
[156 100 713]
[]int{156, 100, 713}
【讨论】:
给定一个字符串
in := "[156, 100, 713]"
首先,让我们去掉方括号:
trimmed := strings.Trim(in, "[]")
//=> "156, 100, 713"
接下来,将字符串拆分为字符串切片:
strings := strings.Split(trimmed, ", ")
//=> []string{"156", "100", "713"}
现在我们可以将字符串转换为整数
ints := make([]int, len(strings))
for i, s := range strings {
ints[i], _ = strconv.Atoi(s)
}
fmt.Printf("%#v\n", ints)
//=> []int{156, 100, 713}
有关更多信息,请参阅 go 文档:https://devdocs.io/go/strings/index
【讨论】: