말이 애매한데. 걍 C언어의 함수 포인터를 어떻게 사용이 가능할까 찾아보는 중.
package main import ( "fmt" "strings" ) func Index(vs []string, t string) int { for i, v := range vs { if v == t { return i } } return -1 } func Include(vs []string, t string) bool { return Index(vs, t) >= 0 } func Any(vs []string, f func(string) bool) bool { for _, v := range vs { if f(v) { return true } } return false } func All(vs []string, f func(string) bool) bool { for _, v := range vs { if !f(v) { return false } } return true } func Filter(vs []string, f func(string) bool) []string { vsf := make([]string, 0) for _, v := range vs { if f(v) { vsf = append(vsf, v) } } return vsf } func Map(vs []string, f func(string) string) []string { vsm := make([]string, len(vs)) for i, v := range vs { vsm[i] = f(v) } return vsm } func main() { var strs = []string{"peach", "apple", "pear", "plum"} fmt.Println(Index(strs, "pear")) fmt.Println(Include(strs, "grape")) fmt.Println(Any(strs, func(v string) bool { return strings.HasPrefix(v, "p") })) fmt.Println(All(strs, func(v string) bool { return strings.HasPrefix(v, "p") })) fmt.Println(Filter(strs, func(v string) bool { return strings.Contains(v, "e") })) fmt.Println(Map(strs, strings.ToUpper)) } |
[링크 : https://gobyexample.com/collection-functions]
package main import "fmt" func upper(input string) string { return "hola" } func Validate(spec string, validations []func(string) string) { for _, exec := range validations { fmt.Println(exec(spec)) } } func main() { Validate("Hola", []func(string) string{upper}) } |
[링크 : https://stackoverflow.com/questions/50913022/array-of-functions-to-as-argument-in-golang]
'Programming > golang' 카테고리의 다른 글
golang method (0) | 2022.09.27 |
---|---|
go mod init 과 go build (0) | 2022.09.27 |
golang package main (0) | 2022.09.23 |
golang REST client (0) | 2022.09.23 |
golang 'go doc' (0) | 2022.09.15 |