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