Go语言语言学习笔记七(空接口保存任意值)

使用空接口实现可以保存任意值的字典
go语言中空接口可以用来保存任意类型的值,但是不能直接当成任意类型进行赋值和运算。下面设计使用map和interface{}实现一个可以关联任何类型的字典实例。

package main
import("fmt")
type Directionary struct{
	data map[interface{}]interface{}
}
//设置Get方法
func (d *Directionary) Get(key interface{}) interface{}{
	return d[key]
}
//设置Set方法
func (d *Directionary) Set(key, value interface{}){
	d[key] = value
}
//遍历回调返回所有数据
func (d *Driectionary) Visit(callback func(k,v interface{}) bool){
	if callback == nil{
		return
	}
	for k,v := range d.data {
		if !callback(k,v){
			return
		}
	}
}
//主方法
func main(){
	d := new(Directionary)
	//设置数据
	d.Set("my wife","wzx")
	d.Set("my name","hzc")
	d.Set("my car", "byd")
	d.Set("my brother","wzh")
	//获取数据
	wife := d.Get("my wife")
	fmt.Println(wife)
	//遍历回调
	d.Visit(func(key,value interface{}) bool {
		if value.(string) == "wzx"{
			fmt.Println("wzx is my wife")
			return true
		}
		if value.(string) == "hzc" {
			fmt.Println("this is me")
			return true
		}
		fmt.Println("go back")
		return true 
	})
}

以上代码首先定义一个结构体Directionary结构体,结构体中的数据为键值都是空接口类型的字典。然后实现Set,Get方法,再实现Visit函数遍历字段的所有键值关联数据。然后在main函数中实例化Directionary。进行设置数据测试,获取数据测试最后进行遍历数据测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值