英文:
Convert string to array of integers in golang
问题
我正在寻找一个互联网上的答案,但没有一个符合我的需求。
我有一个字符串,格式如下:
"[2,15,23]"
我试图将其转换为以下格式:
[2,15,23]
我需要在转换后将其类型更改为[]int。我需要进行转换,因为我想稍后使用它来创建一个接口类型,以便在 SQL 查询中将其作为参数使用。
有没有办法进行转换?
谢谢
英文:
I am looking for an answer in internet but it no one that fit my needs.
I have a string in the following format:
"[2,15,23]"
and i am trying to convert it in this format:
[2,15,23]
I need the type after the convertion to change to []int. I need to convert it because i want to use it later to make an interface type to use it in a sql query as param.
Is there any way to convert it?
Thanks
答案1
得分: 7
使用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
函数可以将JSON字符串解析为Go语言中的数据结构。在上述代码中,我们将字符串[2,15,23]
解析为一个整数切片ints
。如果解析过程中出现错误,我们使用log.Fatal
函数打印错误信息并终止程序。最后,我们使用fmt.Printf
函数打印解析后的整数切片ints
。
英文:
A better way using 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)
}
答案2
得分: 1
以下是翻译好的内容:
这是一个工作示例,如果你还没有根据评论中的建议使用json.Unmarshal进行解析,可以参考一下。
Playground链接
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
}
希望对你有帮助!
英文:
Here is a working example if you haven't figured it out based on the comments suggesting that you use <a href="https://golang.org/pkg/encoding/json/#Unmarshal">json.Unmarshal</a>
<a href="https://play.golang.org/p/t42PPlZXZX">Playground link</a>
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
}
答案3
得分: 1
这有点巧妙,但你可以将其视为一个CSV文件处理:
import (
"encoding/csv"
"strings"
)
in := `"[2,15,23]"`
r := csv.NewReader(strings.NewReader(in))
records, err := r.ReadAll()
英文:
This is slightly hackish but you could treat it like a csv:
import (
"encoding/csv"
"strings"
)
in := `"[2,15,23]"`
r := csv.NewReader(strings.NewReader(in))
records, err := r.ReadAll()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论