Строка в 2D-срез - PullRequest
       7

Строка в 2D-срез

0 голосов
/ 31 мая 2018

Я получаю из магазина Redis двумерный массив в виде строки:

func main() {
    client := setRedisClient()
    data, err := client.Get(redisKey).Result()
    // store data as a 2D slice
}

Вот пример того, как могут выглядеть данные:

[["a", "b"], ["c", "d"], ["e", "f"]]

В идеале мне бы хотелосьчтобы иметь возможность иметь 2D-слайс, так как мне нужно иметь возможность использовать индексы:

dataAsSlice := [][]string {{"a", "b"}, {"c", "d"}, {"e", "f"}} 
fmt.Println(dataAsSlice[0][0]) => "a"

Я не нашел способа проанализировать ответ от redis и сохранить его как 2D-слайс.

Как я мог этого добиться?Является ли даже сохранение в качестве 2D-среза лучшим способом?

1 Ответ

0 голосов
/ 31 мая 2018

Поскольку ваша строка в формате JSON, вы можете преобразовать ее в [][]string{}, используя json.Unmarshal следующим образом:

str := `[["a", "b"], ["c", "d"], ["e", "f"]]`
var dataAsSlice [][]string
err := json.Unmarshal([]byte(str), &dataAsSlice)

Это можно увидеть в действии на игровой площадке Go: https://play.golang.org/p/NEpIKc9Fl-s

...