// package coord -- координаты точки package coord import ( "gitp78su.ipnodns.ru/svi/test_arch/lev0/alias" ) // Coord -- координаты точки type Coord struct { X_ alias.CoordX `json:"x"` // Координата X Y_ alias.CoordY `json:"y"` // Координата Y } // NewCoord -- возвращает новую координаты func NewCoord(key string, elem map[string]interface{}) *Coord { var _lstCoord []interface{} _coord0, isOk := elem[key] if !isOk { _lstCoord = []interface{}{200, 200} } else { fnConvert := func() { defer func() { if _panic := recover(); _panic != nil { _lstCoord = []interface{}{200, 200} } }() _lstCoord = _coord0.([]interface{}) } fnConvert() } x := alias.CoordX(200) y := alias.CoordY(200) if len(_lstCoord) >= 2 { switch _lstCoord[0].(type) { case int: x = alias.CoordX(_lstCoord[0].(int)) y = alias.CoordY(_lstCoord[1].(int)) case float64: fnConvert := func() { defer func() { if _panic := recover(); _panic != nil { x = alias.CoordX(200) y = alias.CoordY(200) } }() x = alias.CoordX(int(_lstCoord[0].(float64))) y = alias.CoordY(int(_lstCoord[1].(float64))) } fnConvert() } } sf := &Coord{ X_: x, Y_: y, } return sf } // X -- возвращает координату X func (sf *Coord) X() alias.CoordX { return sf.X_ } // Y -- возвращает координату Y func (sf *Coord) Y() alias.CoordY { return sf.Y_ } // Coord -- возвращает координаты func (sf *Coord) Coord() (alias.CoordX, alias.CoordY) { return sf.X_, sf.Y_ }