Version 3.2 by chrisby on 2024/03/03 14:50

Hide last authors
chrisby 2.4 1 ### Data Structure Style
chrisby 2.1 2
chrisby 2.4 3 type Square struct {
4 length float
5 }
6
7 type Circle struct {
chrisby 3.2 8 radius float
chrisby 2.4 9 }
10
11 func Area(g GeometricObject) float {
chrisby 3.2 12 switch type(g):
13 case Square:
14 return g.length * g.length
chrisby 2.4 15 case Circle:
chrisby 3.2 16 return PI * g.radius * g.radius
chrisby 2.4 17 }
18
19 func Circumference(g GeometricObject) float {
chrisby 3.2 20 switch type(g):
21 case Square:
22 return 4 * g.length
23 case Circle:
24 return 2 * PI * g.radius
chrisby 2.4 25 }
chrisby 2.1 26
chrisby 2.3 27 #### Object-Oriented Style
chrisby 2.2 28
chrisby 2.3 29 class Square {
30 length float
31
32 constructor(length float) {
33 this.length = length
34 }
35
36 func Area() float {
37 return this.length * this.length
38 }
39
40 func Circumference() float {
41 return 4 * this.length
42 }
43 }
44
45 class Circle {
46 radius float
47
48 constructor(radius float) {
49 this.radius = radius
50 }
51
52 func Area() float {
53 return PI * this.radius * this.radius
54 }
55
56 func Circumference() float {
57 return 2 * PI * this.radius
58 }
59 }