github.com/egonelbre/exp@v0.0.0-20240430123955-ed1d3aa93911/fields/01_typemap/field.go (about)

     1  package main
     2  
     3  type Field interface {
     4  	Name() string
     5  }
     6  
     7  type Uint struct {
     8  	ID    string
     9  	Value uint64
    10  }
    11  
    12  func (a *Uint) Name() string      { return a.ID }
    13  func (a *Uint) Add(b *Uint) *Uint { return &Uint{Value: a.Value + b.Value} }
    14  func (a *Uint) Sub(b *Uint) *Uint { return &Uint{Value: a.Value - b.Value} }
    15  
    16  type Float struct {
    17  	ID    string
    18  	Value float64
    19  }
    20  
    21  func (a *Float) Name() string        { return a.ID }
    22  func (a *Float) Add(b *Float) *Float { return &Float{Value: a.Value + b.Value} }
    23  func (a *Float) Sub(b *Float) *Float { return &Float{Value: a.Value - b.Value} }
    24  
    25  type Error struct{ Desc string }
    26  
    27  func (a *Error) Name() string  { return "Error" }
    28  func (a *Error) Error() string { return a.Desc }