1. 函数声明

Go语言里面拥三种类型的函数:

  • 普通的带有名字的函数
  • 匿名函数或者 lambda 函数
  • 方法

普通函数

func hypot(x, y float64) float64 {
    return math.Sqrt(x*x + y*y)
}
fmt.Println(hypot(3,4)) // "5"

// 函数变量

var f func()
f = hypot
f()
package main 

import (
	"fmt"
	"strings"
)
func StringProccess(list []string , chain []func(string) string  ){

	for index, str := range list{
		result :=str 

		for _, proc := range chain {
			result = proc(result)
		}
		list[index] = result
	}
}

func removePrefix(str string ) string   {
	return strings.TrimPrefix(str,"go")
}
func main() {
	list := []string{
        "go scanner",
        "go parser",
        "go compiler",
        "go printer",
        "go formater",
    }

	chain := []func(string) string{
		removePrefix,
		strings.TrimSpace,
		strings.ToUpper,
	}
	StringProccess(list, chain)
	for _, str := range list {
		fmt.Println(str)
	}
}