flysnow-org / comment

http://www.flysnow.org/ 博客的评论
http://www.flysnow.org/
1 stars 0 forks source link

2016/12/30/golang-function-interface #52

Open utterances-bot opened 4 years ago

utterances-bot commented 4 years ago

Golang必备技巧:接口型函数 | 飞雪无情的博客

Golang必备技巧:接口型函数

https://www.flysnow.org/2016/12/30/golang-function-interface.html

yifanes commented 4 years ago

茅塞顿开,多谢分享

ICERRA commented 3 years ago

更复杂的框架是为了更清晰地扩展,思想上的启发更有意思,有点像设计模式

zhqingyun commented 2 years ago

刚刚从Java转过来的两周,看项目代码有好些看不懂,研读了您的几篇文章,对我大有启发,非常感谢硬核知识

ZeaLot4J commented 11 months ago

仔细看了一遍,差点以为是某种独特的模式,结果发现是画蛇添足强行写成Java那样的函数式接口,事情完全被弄得复杂,go本身函数就是一等公民,为什么不把Each写成高阶函数直接传个函数进去,却非要给一个函数包成一个HandlerFunc类型然后再实现一个Handler接口,绕了一圈最后本质仍然是直接函数调用,不太清楚这个Handler接口的意义何在,扩展性和可读性上都远不如高阶函数 func Each(m map[interface{}]interface{}, f func(k, v interface{})) { if m != nil && len(m) > 0 { for k, v := range m { f(k, v) } } }

type welcome string

func (w welcome) SelfIntro(k, v interface{}) { fmt.Printf("%s,我叫%s,今年%d岁\n", w, k, v) } func main() { persons := make(map[interface{}]interface{}) persons["张三"] = 20 persons["李四"] = 23 persons["王五"] = 26 var w welcome = "大家好" Each(persons, w.SelfIntro) }