2

Ok。ここで「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("!!!"))
}
4

1 に答える 1