golang学习之接口型函数

先说下使用接口型函数的好处:

1、不必将某个接口函数附在某个type上面,保证了命名随意

2、 可以直接调用函数或者使用该接口,两两不耽误

直接上代码吧:

// interface_func project main.go 接口型函数基本使用
package main

import "fmt"

type Handler interface {
    Do(k, v interface{})
}

type HandlerFunc func(k, v interface{})

func (f HandlerFunc) Do(k, v interface{}) {
    f(k, v)
}

func Each(m map[interface{}]interface{}, h Handler) {
    if m != nil && len(m) > 0 {
        for k, v := range m {
            h.Do(k, v)
        }
    }
}

func SelfInfo(k, v interface{}) {
    fmt.Printf("大家好,我是%s,今年%d岁了\n", k, v)
}

func EachFunc(m map[interface{}]interface{}, f func(k, v interface{})) {
    Each(m, HandlerFunc(f))
}

func main() {
    SelfInfo("chaozhou", 23) //可以单独调用
    SelfInfo("lisi", 24)     //可以单独调用
    person := make(map[interface{}]interface{})
    person["chaozhou"] = 23
    person["lisi"] = 24
    EachFunc(person, SelfInfo)
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏拭心的安卓进阶之路

并发编程2:认识并发编程的利与弊

从上篇文章 并发编程1:全面认识 Thread 我们了解了 Java 中线程的基本概念和关键方法。 在开始使用线程之前,我觉得我们有必要先了解下多线程给我们带来...

1838
来自专栏王大锤

理解消息转发机制

1813
来自专栏潇涧技术专栏

Pury Project Analysis

Pury的源码:https://github.com/NikitaKozlov/Pury

672
来自专栏积累沉淀

Java设计模式(六)----适配器模式

适配器模式 1、概述 2、适配器模式的用途 3、模式中的角色 4、实现方式 5、类适配器和对象适配器的权衡 6、缺省适配模式 1、概述  适...

2108
来自专栏Android-JessYan

你不知道的Retrofit缓存库RxCache前言简介使用详解总结

1012
来自专栏木木玲

浅谈 Linux 中 Selector 的实现原理

2742
来自专栏何俊林

插件开发之360 DroidPlugin源码分析(三)Binder代理

Hook机制中Binder代理类关系图 Hook机制中Binder代理时序图 MyServiceManager ServiceManagerCacheBinde...

1849
来自专栏北京马哥教育

linux系统性能监控与优化(3)–memory

虚拟内存以页的方式管理,一般为4K,如果配置了大页,则为2M The Page Frame Reclaim Algorithm.(PFRA) ...

3447
来自专栏C/C++基础

CVTE2017秋季校招一面回忆(C++后台岗)

2016.9.9日下午再一次参加了CVTE的C++后台开发岗的面试,面试经历了1个小时20分钟左右的时间,被问及了很多问题,很多问题也没有回答出来,自己还是存在...

902
来自专栏chenssy

【死磕Netty】-----NIO基础详解

原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! Netty 是基于Java NIO 封装的网络通讯框架,只有充...

3836

扫码关注云+社区