-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.go
43 lines (36 loc) · 881 Bytes
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package main
import "github.com/pjgg/Go-Option/option"
import "fmt"
import "strings"
//Example of usage
func main() {
userA := new(user)
userA.age = 29
userA.name = "pablo"
userAOption := option.Of(userA)
fmt.Println(userAOption.IsPresent())
fmt.Println(userAOption.Get())
userB := new(user)
userB.age = 49
userB.name = "pablo"
userBOption := option.Of(userB)
fmt.Println(userBOption.IsPresent())
fmt.Println(userBOption.Get())
fmt.Println(userBOption.Filter(exampleUserPredicateEqualUser(*userA)))
}
type user struct {
name string
age int
}
func exampleUserPredicateEqualUser(userA user) option.Predicate {
return func(value interface{}) bool {
var result bool
if userB, ok := value.(*user); ok == true {
fmt.Println(strings.Compare(userA.name, userB.name))
result = userA.name == userB.name
} else {
result = false
}
return result
}
}