Files
Eden Kirin ecaab6416e Chaining
2024-01-05 22:14:20 +01:00

54 lines
865 B
Go

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()
}