我正在寻找互联网的答案,但没有一个能满足我的需求。
我有一个以下格式的字符串:
"[2,15,23]"
我试图以这种格式转换它:
[2,15,23]
我需要将转换后的类型更改为[] int。我需要转换它,因为我想稍后使用它来创建一个接口类型,以在sql查询中使用它作为参数。
有没有办法转换它?
由于
答案 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
的评论找出来,这是一个工作示例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()