我在網上尋找答案,但沒有人符合我的需求。將字符串轉換爲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