douzong2206 2016-11-02 16:22
浏览 448
已采纳

如何检查接口是golang中的map [string] string

I want to check the output variable is map[string]string or not. the output should be a map[string]string and it should be a ptr.

I checked ptr value. But I don't know how to check the key of map if is string or not.

sorry for my bad english

import (
    "fmt"
    "reflect"
)

func Decode(filename string, output interface{}) error {
    rv := reflect.ValueOf(output)
    if rv.Kind() != reflect.Ptr {
        return fmt.Errorf("Output should be a pointer of a map")
    }
    if rv.IsNil() {
        return fmt.Errorf("Output in NIL")
    }
    fmt.Println(reflect.TypeOf(output).Kind())
    return nil
}
  • 写回答

1条回答 默认 最新

  • douzong7283 2016-11-02 16:30
    关注

    You don't have to use reflect at all for this. A simple type assert will suffice;

    unboxed, ok := output.(*map[string]string)
    if !ok {
        return fmt.Errorf("Output should be a pointer of a map")
    }
    if unboxed == nil {
        return fmt.Errorf("Output in NIL")
    }
    // if I get here unboxed is a *map[string]string and is not nil
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀