@P747

Доступ к определенному значению данной библиотеки?

Добрый день!
Я только изучаю синтаксис Go. Подскажите пожалуйста, как получить определенное значение из map данной библиотеки? Тоесть в консоли выводит map, пробовал некоторые варианты из Интернета, не получилось :(
https://github.com/kovetskiy/go-php-serialize

https://play.golang.org/p/b4pPAaTwMAA
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
EvgenyMamonov
@EvgenyMamonov Куратор тега Go
Senior software developer, system architect
Вот так можно добраться
package main

import (
    "fmt"

    php "github.com/kovetskiy/go-php-serialize"
)

func main() {
    s := `a:6:{s:7:"__flash";a:1:{s:3:"mes";s:5:"Hello";}s:4:"__id";s:36:"3c5035d9-aea1-4f08-8325-9e598921e2a9";}`
    val, err := php.Decode(s)
    if err != nil {
        fmt.Println(err)
        return
    }

    session := val.(map[interface {}]interface {})
    flash := session["__flash"].(map[interface {}]interface{})

    fmt.Println("id", session["__id"])
    fmt.Println("mes", flash["mes"])
}

По хорошему надо проверять прошло ли нормально приведение типов, чтобы небыло panic
session, ok := val.(map[interface {}]interface {})
    if !ok {
        // с val явно что-то не так, оно не соответствует типу map[interface {}]interface {}
    }

    flash, ok := session["__flash"].(map[interface {}]interface{})
    if !ok {
        // ...
    }
Ответ написан
Комментировать
@DonnieDrummer
fmt.Println(val.(map[interface {}]interface{})["__flash"])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы