一、前言
这里的还是跟C有区别的,大家熟悉了其他语言后,还得注意一下这里的内容。Go的函数非常灵活。
二、学习代码
package main import "fmt" // ZhengXing 类似typedef的方法 type ZhengXing int // 函数名有说法,首字母大写是public的,小写是private的 // func 函数名 形参 返回参数类型 func add(num1 int, num2 int) float32 { num3 := float32(num1 + num2) return num3 } func putFuncIn(num int, function func(int, int) float32) int { sum := num + int(function(7, 8)) return sum } func main() { var num1, num2 int num1, num2 = 1, 2 num1, num2 = num2, num1 fmt.Println(num1, num2) fmt.Println(add(1, 2)) fmt.Println(Double2(2)) //返回多个参数,如下 doubleIt, flag := TwoReturn(100) fmt.Println(doubleIt) fmt.Println(flag) //多个,不清楚多少参数的时候,如下 fmt.Println(ManyNums(1, 2)) fmt.Println(ManyNums(1, 2, 3, 4, 5)) //需要注意变量的作用域问题,函数内的不会影响到main的 //指针可以让函数内修改main变量,同C,如下 var num int = 64 ptrSetting(&num) fmt.Println(num) //可以给函数做成变量,感觉有点像是换名字,类似于函数指针 a := add a(1, 6) fmt.Printf("%T\n", a) //a也可以当变量传入其他函数 fmt.Println(putFuncIn(100, a)) //自定义数据类型 var num5 ZhengXing = 111 fmt.Println(num5) //可以在函数头指明要返回谁 fmt.Println(sumAndSub(3, 4)) }
package main func Double2(x int) int { return x * x } func TwoReturn(num int) (int, bool) { var judge bool if num > 10 { judge = true } else { judge = false } return num * num, judge } func ManyNums(args ...int) int { var sum int for i := 0; i < len(args); i++ { sum += args[i] } return sum } func ptrSetting(ptr *int) { *ptr++ return } func sumAndSub(a, b int) (sum, sub int) { sum = a + b sub = a - b return }
还没有评论,来说两句吧...