专栏首页西安-晁州golang学习之接口型函数

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 条评论
登录 后参与评论

相关文章

  • golang学习之slice基本操作

    slice的增删改查: //删除 func remove(slice []interface{}, i int) []interface{} { // ...

    用户1141560
  • Ubuntu 16下单机安装配置zookeeper和kafka

    环境说明: os:Ubuntu 16.04 zookeeper:zookeeper 3.4.9 kafka:kafka_2.11-0.11.0.0 jdk:jd...

    用户1141560
  • vue.js应用开发笔记

    看vue.js有几天了,之前也零零散散的瞅过,不过一直没有动手去写过demo,这几天后台事比较少,一直在讨论各种需求(其实公司对需求还是比较重视与严谨的,一个项...

    用户1141560
  • go 自定义排序

    超级大猪
  • go语言中的interface使用实例

    go语言中的interface是一组未实现的方法的集合,如果某个对象实现了接口中的所有方法,那么此对象就实现了此接口。与其它面向对象语言不同的是,go中无需显示...

    李海彬
  • 粗能力计划

    1.什么是粗能力计划   对主生产计划进行有效的管理是ERP系统中最富挑战性的和最困难的工作之一。主生产计划员的明确的目标是生成一份可执行的主生产计划。这就意味...

    SAP最佳业务实践
  • KDE without BUG

    ​ 本文旨在收集Manjaro KDE 系统在日常使用中的BUG解决办法.与君共享.

    BORBER
  • 青年总裁组织上海分会贵宾一行莅临安恒信息参观考察

    5月28日,青年总裁组织上海分会贵宾一行莅临安恒信息参观考察。组织成员东方希望集团有限公司总经理Shawn Liu、惠理有限公司CEO Bryan Chan、智...

    安恒信息
  • 【HDU 5858】Hard problem(圆部分面积)

    交点是(\frac{\sqrt{7} L}{4\sqrt{2}},\frac{L}{4\sqrt{2}})。

    饶文津
  • 一篇带你看懂Flutter叠加组件Stack

    Stack未定位的子组件大小由fit参数决定,默认值是StackFit.loose,表示子组件自己决定,StackFit.expand表示尽可能的大,用法如下:

    老孟Flutter

扫码关注云+社区

领取腾讯云代金券