I'm trying to understand function types in Go, so I tried with the below code.
package main
import "fmt"
func myfn1(i string) {
fmt.Println(i)
}
func myfunc2(firstName string, lastName string) string {
return "Hello "+ firstName + " " + lastName + "!"
}
func test(do func(string), val string) {
do(val)
}
func test1(t func(string,string), fname string, lname string) string {
opt := t(fname, lname)
return opt
}
func main() {
test(myfn1, "Aishu")
greet := test1(myfunc2, "Aishu","S")
fmt.Println(greet)
}
And it throws below error.
- t(fname, lname) used as value
- cannot use myfunc2 (type func(string, string) string) as type func(string, string) in argument to test1
I'm not sure what I'm doing wrong.