This commit is contained in:
Eden Kirin
2024-01-05 22:14:20 +01:00
parent 29f75f5eda
commit ecaab6416e
4 changed files with 59 additions and 1 deletions

2
chaining/Makefile Normal file
View File

@ -0,0 +1,2 @@
run:
@go run main.go

3
chaining/go.mod Normal file
View File

@ -0,0 +1,3 @@
module patterns
go 1.21.5

53
chaining/main.go Normal file
View File

@ -0,0 +1,53 @@
package main
import "fmt"
type Filter struct {
alive *bool
id *int
externalId *string
}
func NewFilter() *Filter {
return &Filter{}
}
func (f *Filter) Dump() {
fmt.Println("Filter non-nil options:")
if f.alive != nil {
fmt.Printf(" Alive: %v\n", *f.alive)
}
if f.id != nil {
fmt.Printf(" Id: %v\n", *f.id)
}
if f.externalId != nil {
fmt.Printf(" ExternalId: %v\n", *f.externalId)
}
}
func (f *Filter) Alive(alive bool) *Filter {
f.alive = &alive
return f
}
func (f *Filter) Id(id int) *Filter {
f.id = &id
return f
}
func (f *Filter) ExternalId(externalId string) *Filter {
f.externalId = &externalId
return f
}
func main() {
var f *Filter
f = NewFilter().ExternalId("some-external-id")
f.Dump()
fmt.Println("-------------------")
f = NewFilter().Id(123).Alive(true).ExternalId("some-external-id")
f.Dump()
}

View File

@ -54,7 +54,7 @@ func NewFilter(opts ...SetFilterFunc) *Filter {
func main() { func main() {
var f *Filter var f *Filter
f = NewFilter() f = NewFilter(WithExternalId("some-external-id"))
f.Dump() f.Dump()
fmt.Println("-------------------") fmt.Println("-------------------")