1, create new project “test7_function”
$ cd ~/project
$ mkdir test7_function
$ cd test7_function
$ touch function.go
2,add following lines in “function.go”
package main
import (
"fmt"
)
type Dog struct {
name string
weight float32
sex string
}
func describe(f func(string) int, n string) {
fmt.Println(f(n))
}
func main() {
// TEST 1, define pointer
var p *int
var n int
n = 21
p = &n
fmt.Println(n, p, *p)
// TEST 2, define struct
var pp = Dog{"pang pang", 17.5, "female"}
pp.weight = 15.6
fmt.Println(pp)
// TEST 3, define struct pointer
var nn *Dog = &pp
nn.name = "nao nao"
(*nn).weight = 7.5
(*nn).sex = "male"
fmt.Println(nn, *nn)
// TEST 4, array and slice
var nums = [9]int{12, 23, 34, 45, 56, 67, 78, 89, 90}
var slice []int = nums[3:7]
nums[5] = 111
fmt.Println(slice)
// TEST 5, define struct slice
var dogs = []Dog{
Dog{"pang pang", 30.5, "female"},
Dog{"nao nao", 7.5, "male"},
Dog{"biu biu", 15.0, "male"},
Dog{"zai zai", 17.0, "male"}}
fmt.Println(dogs[0:2])
// TEST 6, define a slice
var names = make([]string, 0)
names = append(names, "11", "22", "33", "44", "55")
fmt.Println(names)
// TEST 7, range
for idx, content := range names {
content = "333"
fmt.Println(names[idx], "VS", content)
}
// TEST 8, define map
var age = make(map[string]int)
age["pang pang"] = 4
age["nao nao"] = 3
age["biu biu"] = 2
age["zai zai"] = 23
delete(age, "biu biu")
if k, ok := age["nao nao"]; ok {
fmt.Println("! nao nao !", k)
} else {
fmt.Println("! ! nao nao", k)
}
// TEST 9, function
var function = func(name string) int {
return age[name]
}
describe(function, "zai zai")
}
3, run “function.go”
$ go run function.go
you should get result like this:
21 0xc0000b8010 21
{pang pang 15.6 female}
&{nao nao 7.5 male} {nao nao 7.5 male}
[45 56 111 78]
[{pang pang 30.5 female} {nao nao 7.5 male}]
[11 22 33 44 55]
11 VS 333
22 VS 333
33 VS 333
44 VS 333
55 VS 333
! nao nao ! 3
23