dictionary - 落在引用/指针上的类型断言

标签 dictionary go assertion

我正试图从引用中获取 map ,但断言似乎失败了:

session.AddFlash(gin.H{
    "username": username,
    "password": password,
}, "_post")

...

flashes := session.Flashes("_post")
if flashes != nil {
    flash = flashes[0]
    fmt.Printf("%T\n", flash)
    if post_data, ok := flash.(gin.H); ok {
        fmt.Println("post_data:", post_data)
        data = post_data
    } else {
        fmt.Println("post_data(failed):", post_data)
    }
}

但是我总是得到以下输出,断言失败了:

*gin.H
post_data(failed): map[]

我认为这是由于我所做的断言,所以我已经尝试过:

if post_data, ok := (*flash).(gin.H); ok {

但随后我得到了 invalid indirect of flash (type interface {})

我也试过:

if post_data, ok := *flash.(gin.H); ok {

但这给了我 invalid indirect of flash.(gin.H) (type gin.H)

最佳答案

您将 * 放在了错误的位置。它应该是 flash.(*gin.H)

关于dictionary - 落在引用/指针上的类型断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352080/

相关文章:

python - 在 Python 中存储字典路径

c# - C# 中的字符串到字典或数组

go - 如何在 Golang 中打印 slice 的内存地址?

json - 为每个 GET 请求创建一个新的 JSON 文件

java - List<String> @Test 从最后一个索引中删除 null

go - 断言失败触发函数

mysql - 使用 ContainsAll 断言进行 JUnit 测试

Java Map<String, Map<String, Object>> 转换为 String 并返回

java - 将一个值放入 Java 中的映射中*而不*更新现有值(如果存在)

arrays - 在 Go 中初始化一个二维动态数组