在golang中将字符串转换为整数数组

时间:2017-02-06 18:00:58

标签: go

我正在寻找互联网的答案,但没有一个能满足我的需求。

我有一个以下格式的字符串:

"[2,15,23]"

我试图以这种格式转换它:

[2,15,23]

我需要将转换后的类型更改为[] int。我需要转换它,因为我想稍后使用它来创建一个接口类型,以在sql查询中使用它作为参数。

有没有办法转换它?

由于

3 个答案:

答案 0 :(得分:4)

使用json.Unmarshal的更好方式:

func main() {
    str := "[2,15,23]"
    var ints []int
    err := json.Unmarshal([]byte(str), &ints)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%v", ints)
}

答案 1 :(得分:0)

如果你没有根据建议你使用json.Unmarshal

的评论找出来,这是一个工作示例

Playground link

package main

import (
    "fmt"
    "log"
    "encoding/json"
)

func main() {
    str := "[2,15,23]"
    ints, err := convertToIntSlice(str)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%v", ints)
}

type IntSlice struct {
    Ints []int
}

func convertToIntSlice(s string) ([]int, error) {
    a := &IntSlice{}
    err := json.Unmarshal([]byte(`{"Ints":`+s+"}"), a)
    return a.Ints, err
}

答案 2 :(得分:0)

这有点hackish,但你可以像csv一样对待它:

import (
    "encoding/csv"
    "strings"
)

in := `"[2,15,23]"`
r := csv.NewReader(strings.NewReader(in))

records, err := r.ReadAll()