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 }