Skip to content

Instantly share code, notes, and snippets.

@anjmao
Created November 26, 2017 12:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anjmao/b5813477e8fef05e8e48c8eef21a5dbb to your computer and use it in GitHub Desktop.
Save anjmao/b5813477e8fef05e8e48c8eef21a5dbb to your computer and use it in GitHub Desktop.
package main
import "fmt"
type Language struct {
ID int
Name string
Rating int
}
func Filter(vs []Language, f func(Language) bool) []Language {
vsf := make([]Language, 0)
for _, v := range vs {
if f(v) {
vsf = append(vsf, v)
}
}
return vsf
}
func Map(vs []Language, f func(Language) string) []string {
vsm := make([]string, len(vs))
for i, v := range vs {
vsm[i] = f(v)
}
return vsm
}
func main() {
languages := []Language{
Language{ID: 1, Name: "Javascript", Rating: 9},
Language{ID: 2, Name: "Golang", Rating: 9},
Language{ID: 3, Name: "Python", Rating: 8},
Language{ID: 4, Name: "Rust", Rating: 8},
Language{ID: 5, Name: "C#", Rating: 7},
Language{ID: 5, Name: "Java", Rating: 5},
}
filtered := Filter(languages, func(lang Language) bool {
return lang.Rating > 8
})
bestLanguages := Map(filtered, func(lang Language) string {
return lang.Name
})
fmt.Println(bestLanguages)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment