1. 程式人生 > >go - http.HandleFunc 的實現

go - http.HandleFunc 的實現

簡單記錄以下,重點是以下這段程式碼:
這段程式碼 通過 HandlerFunc實現了普通函式轉Handler介面。

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

type HandlerFunc func(k, v interface{})

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

以下是完整程式碼。

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 EachFunc(m map[interface{}]interface{}, f func(k, v interface
{})) { Each(m, HandlerFunc(f)) } func selfInfo(k, v interface{}) { fmt.Printf("大家好,我叫%s,今年%d歲\n", k, v) } func main() { persons := make(map[interface{}]interface{}) persons["張三"] = 20 persons["李四"] = 23 persons["王五"] = 26 EachFunc(persons, selfInfo) }