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
|
package main
import (
"fmt"
. "example"
)
func main() {
// First create some objects using the pointer library.
fmt.Println("Testing the pointer library")
a := New_intp()
b := New_intp()
c := New_intp()
Intp_assign(a, 37)
Intp_assign(b, 42)
fmt.Println(" a =", a)
fmt.Println(" b =", b)
fmt.Println(" c =", c)
// Call the add() function with some pointers
Add(a, b, c)
// Now get the result
res := Intp_value(c)
fmt.Println(" 37 + 42 =", res)
// Clean up the pointers
Delete_intp(a)
Delete_intp(b)
Delete_intp(c)
// Now try the typemap library
// Now it is no longer necessary to manufacture pointers.
// Instead we use a single element slice which in Go is modifiable.
fmt.Println("Trying the typemap library")
r := []int{0}
Sub(37, 42, r)
fmt.Println(" 37 - 42 = ", r[0])
// Now try the version with return value
fmt.Println("Testing return value")
q := Divide(42, 37, r)
fmt.Println(" 42/37 = ", q, " remainder ", r[0])
}
|