首页 > 其他分享 >golang map 和 interface 的一些记录

golang map 和 interface 的一些记录

时间:2022-09-27 21:45:50浏览次数:48  
标签:map return string fmt golang Println interface age name

  • 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"))
}

标签:map,return,string,fmt,golang,Println,interface,age,name
From: https://www.cnblogs.com/yzhch/p/16736090.html

相关文章

  • Golang-常用算法
    快速排序funcQuickSort(sort[]int)[]int{ iflen(sort)<=1{ returnsort } low:=make([]int,0,0) mid:=make([]int,0,0) high:=make([]int,0,0......
  • 【Golang】PHP转Go强大的工具库
    PHP的朋友应该会被PHP中两大特性折服:1、强大的array,一切皆Array;2、强大的函数库,函数类型非常丰富。一、简单示例1、例如:md5函数Go版本写法:packagemainimport......
  • 【Golang】关于Golang中一些优秀的类库
    一、CLI命令(spf13/cobra)GitHub地址:https://github.com/spf13/cobra Cobra既是一个创建强大的现代CLI应用程序的库,也是一个生成应用程序和命令的程序。可以使用这个......
  • Redis之bitmap
    一、bitmap介绍bitmap,也叫位图,是一种实现对位的操作的'数据结构',用一个bit位来表示一个东西的状态,我们都知道bit位是二进制,所以只有两种状态,0和1。bitmap同样属于redis......
  • 【安全测试】【sqlmap】sqlmap快速入门
    一、目的本文主要介绍如何用sqlmap来测试某个接口是否有sql注入的风险,以及查看对应的注入的payload。sqlmap支持-u指定接口的url信息,也支持-r来解析文件中的请求信息。......
  • SpringBoot中集成websocket后WebSocketServer中注入mapper为空
    场景SpringBoot整合WebSocket时调用service和mapper的方法:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/114829426上面讲了在集成websocket后,调用mapper......
  • on the IPv6 loopback interface: 'Cannot assign requested address'
    .netcore+docker  需要修改两个地方Dockerfile添加 ENVASPNETCORE_URLS=http://+:44303  FROMmcr.microsoft.com/dotnet/aspnet:6.0ASbaseENVASPNETCORE......
  • 【安全测试】nmap使用手册
    端口扫描安全测试步骤:1.登录服务器:10.82.x.x(找运维申请权限)2.输入nmap查看是否可用3.跳转执行下面2.3生成报告中的命令即可一、windows使用在启动栏搜索zenmapGUI......
  • 【安全测试】nmap安装
    1.下载安装软件2.双击exe执行安装,下一步傻瓜式安装即可 3.安装完成后在启动栏搜索zenmapGUI即可进入图形化界面进行扫描也可以进入cmd,输入nmap命令行进行扫描 Tr......
  • Golang Plan9汇编研究——BP,SP和(SP)
    最近有时间研究下Golang的汇编,在开始之前,最好能了解下X86的汇编。Go汇编使用的是Plan9汇编,网上有很多资料可以查看,不过这篇我打算从自己亲手调试过的代码开始记录。Go使用......