github.com/HaHadaxigua/yaegi@v1.0.1/_test/issue-1375.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  type Option func(*Struct)
     6  
     7  func WithOption(opt string) Option {
     8  	return func(s *Struct) {
     9  		s.opt = opt
    10  	}
    11  }
    12  
    13  type Struct struct {
    14  	opt string
    15  }
    16  
    17  func New(opts ...Option) *Struct {
    18  	s := new(Struct)
    19  	for _, opt := range opts {
    20  		opt(s)
    21  	}
    22  	return s
    23  }
    24  
    25  func (s *Struct) ShowOption() {
    26  	fmt.Println(s.opt)
    27  }
    28  
    29  func main() {
    30  	opts := []Option{
    31  		WithOption("test"),
    32  	}
    33  	s := New(opts...)
    34  	s.ShowOption()
    35  }
    36  
    37  // Output:
    38  // test