好的。我在理解“MyPrinter”到底发生了什么时遇到了一些麻烦让我一步一步来(如果有错误,请纠正我)
1. 创建了“Salute”结构
2. 调用“Greet”函数
2.a使用字符串“!!!”调用“CreatePrinterFunction”。这个函数返回一个“MyPrinter”(witch 是一个函数,它接受一个字符串并且什么都不返回)
3. 变量“message”和“defaultMessage”是用字符串设置的
现在问题来了,我不明白那些 do("str") 到底在做什么
package main
import "fmt"
type Salute struct {
name string
greeting string
}
type MyPrinter func (s string) ()
func Greet(salute Salute, do MyPrinter) {
message, defaultMessage := CreateMessage(salute.name, salute.greeting, "noName")
do(message)
do(defaultMessage)
}
func Print(s string) {
fmt.Print(s)
}
func PrintLine(s string) {
fmt.Println(s)
}
func CreatePrinterFunction(custom string) MyPrinter {
return func (s string) {
fmt.Println(s + custom)
}
}
func CreateMessage(name string, greeting ...string) (message string, defaultMessage string) {
message = name + " " + greeting[0]
defaultMessage = "hey " + name
return
}
func main() {
var s = Salute{"Joe", "hello"}
// Greet(s, PrintLine)
Greet(s, CreatePrinterFunction("!!!"))
}
阿波罗的战车
相关分类