一、前言
这里的还是跟C有区别的,大家熟悉了其他语言后,还得注意一下这里的内容。Go的函数非常灵活。
二、学习代码
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))
}
Go
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
}