2017-02-06 117 views
0

我在網上尋找答案,但沒有人符合我的需求。將字符串轉換爲golang中的整數數組

我有以下格式的字符串:

"[2,15,23]" 

,我試圖將其轉換格式爲:

[2,15,23] 

我需要的那種類型的皈依後更改爲[] INT。我需要轉換它,因爲我想稍後使用它來創建一個接口類型在SQL查詢中使用它作爲參數。

有什麼辦法可以轉換它嗎?

感謝

+4

您可以在這裏使用基本的JSON反編組。 –

+2

https://golang.org/pkg/encoding/json/#Unmarshal – Firedrake969

回答

2

使用更好的方法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) 
} 
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 
} 
+1

你不需要聲明一個類型的所有這些開銷,你可以直接在一個int片段中解組:https://play.golang.org/ p/3VgfnPo7Hz – hbejgel

0

這是輕微的hackish,但你可以把它當作csv處理:

import (
    "encoding/csv" 
    "strings" 
) 

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

records, err := r.ReadAll()