Go:将数组中的字符串转换为整数

AUL*_*AUL 15 go

如何将数组中的字符串转换为数组中的整数?

["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)

操场上.


pet*_*rSO 9

例如,

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


Amo*_*ira 5

这是一个古老的问题,但所有答案都忽略了输入长度是预先已知的事实,因此可以通过预先分配目标切片来改进:

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