github.com/packtpublishing/learning-functional-programming-in-go@v0.0.0-20230130084745-8b849f6d58c4/Chapter07/func-param/src/server/server_options.go (about) 1 package server 2 3 import ( 4 . "utils" 5 "errors" 6 ) 7 8 type ServerOption func(*options) error 9 10 func MaxNumber(n int) ServerOption { 11 return func(o *options) error { 12 o.maxNumber = n 13 return nil 14 } 15 } 16 17 func MaxConcurrentConnections(n int) ServerOption { 18 return func(o *options) error { 19 if n > Config.MaxConcurrentConnections { 20 return errors.New("error setting MaxConcurrentConnections") 21 } 22 o.maxConcurrentConnections = n 23 return nil 24 } 25 } 26 27 type convert func(int) (string, error) 28 29 func FormatNumber(fn convert) ServerOption { 30 return func(o *options) (err error) { 31 o.convertFn = fn 32 return 33 } 34 } 35 36 func UseNumberHandler(b bool) ServerOption { 37 return func(o *options) error { 38 o.useNumberHandler = b 39 return nil 40 } 41 } 42