我在网上寻找答案,但没有人符合我的需求。将字符串转换为golang中的整数数组
我有以下格式的字符串:
"[2,15,23]"
,我试图将其转换格式为:
[2,15,23]
我需要的那种类型的皈依后更改为[] INT。我需要转换它,因为我想稍后使用它来创建一个接口类型在SQL查询中使用它作为参数。
有什么办法可以转换它吗?
感谢
我在网上寻找答案,但没有人符合我的需求。将字符串转换为golang中的整数数组
我有以下格式的字符串:
"[2,15,23]"
,我试图将其转换格式为:
[2,15,23]
我需要的那种类型的皈依后更改为[] INT。我需要转换它,因为我想稍后使用它来创建一个接口类型在SQL查询中使用它作为参数。
有什么办法可以转换它吗?
感谢
使用更好的方法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)
}
这里是如果你还没有想通了基于建议你使用注释的工作示例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
}
你不需要声明一个类型的所有这些开销,你可以直接在一个int片段中解组:https://play.golang.org/ p/3VgfnPo7Hz – hbejgel
这是轻微的hackish,但你可以把它当作csv处理:
import (
"encoding/csv"
"strings"
)
in := `"[2,15,23]"`
r := csv.NewReader(strings.NewReader(in))
records, err := r.ReadAll()
您可以在这里使用基本的JSON反编组。 –
https://golang.org/pkg/encoding/json/#Unmarshal – Firedrake969