54 lines
865 B
Go
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()
|
|
}
|