2
好的。我在使用“MyPrinter”时遇到了一些困难 让我一步一步(如果出现问题请纠正我)
1.创建“致敬”结构
2.致电“致电“功能
2.a用”!!!“调用”CreatePrinterFunction“。这个函数返回一个“MyPrinter”(女巫是一个函数,它在一个字符串,并没有返回值)
3.变量“消息”和“defaultMessage”设置与琴弦
通过动态创建函数作为参数
现在,这里的问题,我不明白究竟是那些做( “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("!!!"))
}
“MyPrinter”是什么意思。它是专门寻找一个函数,它获取一个字符串并返回一个类型为“MyPrinter”的函数,或者只是一个函数,它将得到一个字符串并且不返回任何内容。如果有多个函数返回“MyPrinter”,将会发生什么 – waaadim
'做MyPrinter'只是意味着函数接受一个名为'do'的参数,它必须实现'MyPrinter'接口。您可以根据需要使用多个实现“MyPrinter”接口的函数,并且可以将它们中的任何一个作为参数提供给该函数。 –
好吧,现在我明白了。我认为''MyPrinter'类似于C,PHP中的'define',但它创建一个新类型的变量像'int,string',这个'type'似乎像一个Class – waaadim