• golangmap读取是不需要判断key是否存在的,不存在的key会返回默认值。
  • 如果map的value是interface,那么interface是需要先进行类型转换的,非要求类型的转换,得到结果是nil
package main

import "fmt"

var m map[string]interface{}

func getStr(k string) string {
v, ok := m[k].(string)
if ok {
return v
} else {
return "Null"
}
} func getNum(k string) int {
v, ok := m[k].(int)
if ok {
return v
} else {
return 0
}
} func getFunc(k string) string {
v, ok := m[k].(func(name string, age int) string)
if ok {
return v(getStr("name"), getNum("age"))
} else {
return "unknow"
} //v, _ := m[k].(func(name string, age int) string)
//return v("a", 12)
} func main() {
fmt.Println("Hello, 世界")
m = map[string]interface{}{
"name": "zhangsan",
"age": 12,
"is_female": false,
"hi": func(name string, age int) string {
return fmt.Sprintf("hello, my name is %s, i'm %d year old.", name, age)
},
}
fmt.Println(getStr("name"))
fmt.Println(getStr("age"))
fmt.Println(getStr("hi"))
fmt.Println(getNum("age"))
fmt.Println(getFunc("age"))
fmt.Println(getFunc("sayhi"))
fmt.Println(getFunc("hi"))
}

golang map 和 interface 的一些记录的更多相关文章

  1. golang map 读写锁与深度拷贝的坑

    0X01 golang中,map(字典)无法并发读写 简单来说,新建万条线程对同一个map又读又写,会报错. 为此,最好加锁,其实性能影响并不明显. type taskCache struct{ sy ...

  2. 【荐】详解 golang 中的 interface 和 nil

    golang 的 nil 在概念上和其它语言的 null.None.nil.NULL一样,都指代零值或空值.nil 是预先说明的标识符,也即通常意义上的关键字.在 golang 中,nil 只能赋值给 ...

  3. 【GoLang】GoLang map 非线程安全 & 并发度写优化

    Catena (时序存储引擎)中有一个函数的实现备受争议,它从 map 中根据指定的 name 获取一个 metricSource.每一次插入操作都会至少调用一次这个函数,现实场景中该函数调用更是频繁 ...

  4. golang map输出排序

    由于GoLang Map 内部存储是无序的,当需要按顺序获得map存储的key -value值时,应该对遍历出来的结果进行重新排序: 在go 1.8版本后,提供的slice sort 功能使排序更简单 ...

  5. is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface | mongodb在windows和Linux导出出错

    执行mongoexport命令的时候 mongoexport --csv -f externalSeqNum,paymentId --host 127.0.0.1:27017 -d liveX -c ...

  6. go语言解析 map[string]interface{} 数据格式

    原文:https://blog.csdn.net/Nick_666/article/details/79801914 map记得分配内存 解析出来的int类型会变成float64类型 注意判断不为ni ...

  7. 【方法1】删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录

    介绍 晚上无聊的时候,我做了一个測试题,測试题的大体意思是:删除Map中Value反复的记录,而且仅仅保留Key最小的那条记录. 比如: I have a map with duplicate val ...

  8. golang map to struct

    http://stackoverflow.com/questions/26744873/converting-map-to-struct func SetField(obj interface{}, ...

  9. golang学习笔记 ---interface

    1. 什么是interface接口 interface 是GO语言的基础特性之一.可以理解为一种类型的规范或者约定.它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“im ...

  10. 【转】GO语言map类型interface{}转换踩坑小记

    原文:https://www.az1314.cn/art/69 ------------------------------------------ mapA := make([string]inte ...

随机推荐

  1. 【IDEA】IDEA上如何解决代码冲突

    首先,坐好准备工作,在feature-resolve-conflict分支上作如下改动: 在master分支作如下改动: 假如现在我们需要将master分支合并到feature-resolve-con ...

  2. Deepseek学习随笔(3)--- 高效提问技巧

    明确需求 在与 DeepSeek 互动时,明确需求是获取高质量回复的关键.以下是一些示例: 错误示例:帮我写点东西 这样模糊的指令无法让 DeepSeek 理解你的具体需求,生成的回复可能无法满足你的 ...

  3. autMan奥特曼机器人-narkPro对接autMan内置容器

    前言 这里以NarkPro为例,其他登陆工具自测.下面是以vc1为例展开说明 一.创建autMan虚拟容器vc1 理论上来说autMan可以创建无数个虚拟容器,即相当于你创建无数个青龙容器 二.创建系 ...

  4. Docker - 部署IT运维管理平台CAT

    原文链接:https://mp.weixin.qq.com/s/Ld9OLnmHP1IAc0Ofo-RzeQ 一.CAT介绍(略) 二.环境规划(略) 三.检查环境(略) 四.部署cat镜像 1.下载 ...

  5. Ansible - [02] 基础配置以及常用操作场景

    Ansible 基础配置 主配置文件:/etc/ansible/ansible.cfg ansible配置文件查找顺序 首先检测ANSIBLE_CONFIG变量定义的配置 其次检查当前目录下的./an ...

  6. 【BUUCTF】BabySQli

    [BUUCTF]BabySQli 题目来源 收录于:BUUCTF GXYCTF2019 题目描述 纯粹的SQL注入题 随意传入 name=abc&pw=a 返回 wrong user 尝试传入 ...

  7. P4688 [Ynoi Easy Round 2016] 掉进兔子洞

    莫队可以维护种类数 但是无法维护出现次数 考虑离散化以后我们后面腾出了一些空位 那么我们就可以填进那些坑里面 这样做我们就可以用 bitset 直接做与运算 那么 莫队 + bitset 即可

  8. 少样本学习实战:Few-Shot Prompt设计

    让AI用最少样本学会"举一反三" 想象一下,你要教一个外星人认识地球上的动物.如果只给它看三张哈士奇的照片,它可能会认为所有四条腿的动物都叫"哈士奇".这就是A ...

  9. How to use the Ubuntu

    How to use the Ubuntu Introduction ‍ As far as I have noted, I will force myself to write all my blo ...

  10. PHP的回调函数

    所谓的回调函数,就是指调用函数时并不是向函数中传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中,这个作为参数的函数就是回调函数.通俗的来说,回调函数也是一个我们定义的函数,但是不 ...