-
Notifications
You must be signed in to change notification settings - Fork 0
/
area.go
64 lines (54 loc) · 1.83 KB
/
area.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package measurement
// https://www.legislation.gov.uk/uksi/1994/2867/schedule/made
// https://en.wikipedia.org/wiki/Imperial_units
// # Square mile = 640 acres.
// # Acre = 4840 square yards.
// # Rood = 1210 square yards.
// # Square yard = a superficial area equal to that of a square each side of which measures one yard.
// # Square foot = 1/9 square yard.
// # Square inch = 1/144; square foot.
var ImperialAreas = imperialAreas{
factor: map[AreaUnit]float64{
AreaUnits.SquareFoot: 1.0 / 144.0,
AreaUnits.SquareFoot: 1.0,
AreaUnits.SquareYard: 9.0,
AreaUnits.Rood: 9.0 * 1210.0,
AreaUnits.Acre: 9.0 * 4840.0,
AreaUnits.SquareMile: 9.0 * 4840.0 * 640.0,
},
abbr: map[AreaUnit][]string{
AreaUnits.Acre: {AreaUnits.Acre.String()},
AreaUnits.Rood: {AreaUnits.Rood.String()},
AreaUnits.SquareFoot: {AreaUnits.SquareFoot.String()},
AreaUnits.SquareInch: {AreaUnits.SquareInch.String()},
AreaUnits.SquareYard: {AreaUnits.SquareYard.String()},
AreaUnits.SquareMile: {AreaUnits.SquareMile.String()},
},
system: map[AreaUnit]MeasurementSystem{
AreaUnits.Acre: MeasurementSystems.Imperial,
AreaUnits.Rood: MeasurementSystems.Imperial,
AreaUnits.SquareFoot: MeasurementSystems.Imperial,
AreaUnits.SquareInch: MeasurementSystems.Imperial,
AreaUnits.SquareYard: MeasurementSystems.Imperial,
AreaUnits.SquareMile: MeasurementSystems.Imperial,
},
}
type imperialAreas struct {
factor map[AreaUnit]float64
abbr map[AreaUnit][]string
system map[AreaUnit]MeasurementSystem
}
type Area interface {
Size()
}
type SquareArea struct {
Side Length `json:"size,omitempty"`
}
func (t SquareArea) Size() {
}
var _ Area = &SquareArea{}
type RectangleArea struct {
Side1 Length `json:"side-1,omitempty"`
Side2 Length `json:"side-2,omitempty"`
Unit AreaUnit `json:"unit,omitempty"`
}