如何将数组中的字符串转换为数组中的整数?
["1", "2", "3"]
Run Code Online (Sandbox Code Playgroud)
至
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我在网上搜索了一些解决方案但找不到它.我试图遍历数组并执行strconv.ParseFloat(v,64)其中v是值,但它不起作用.
jul*_*enc 22
你必须确实在切片中循环.如果切片只包含整数,则不需要ParseFloat
,Atoi
就足够了.
import "fmt"
import "strconv"
func main() {
var t = []string{"1", "2", "3"}
var t2 = []int{}
for _, i := range t {
j, err := strconv.Atoi(i)
if err != nil {
panic(err)
}
t2 = append(t2, j)
}
fmt.Println(t2)
}
Run Code Online (Sandbox Code Playgroud)
在操场上.
例如,
package main
import (
"fmt"
"strconv"
)
func sliceAtoi(sa []string) ([]int, error) {
si := make([]int, 0, len(sa))
for _, a := range sa {
i, err := strconv.Atoi(a)
if err != nil {
return si, err
}
si = append(si, i)
}
return si, nil
}
func main() {
sa := []string{"1", "2", "3"}
si, err := sliceAtoi(sa)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%q %v\n", sa, si)
}
Run Code Online (Sandbox Code Playgroud)
输出:
["1" "2" "3"] [1 2 3]
Run Code Online (Sandbox Code Playgroud)
操场:
http://play.golang.org/p/QwNO8R_f90
这是一个古老的问题,但所有答案都忽略了输入长度是预先已知的事实,因此可以通过预先分配目标切片来改进:
package main
import "fmt"
import "strconv"
func main() {
var t = []string{"1", "2", "3"}
var t2 = make([]int, len(t))
for idx, i := range t {
j, err := strconv.Atoi(i)
if err != nil {
panic(err)
}
t2[idx] = j
}
fmt.Println(t2)
}
Run Code Online (Sandbox Code Playgroud)
游乐场:https://play.golang.org/p/LBKnVdi_1Xz
归档时间: |
|
查看次数: |
15978 次 |
最近记录: |