package main
import (
"fmt"
"math"
)
// Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。
// 匿名函数的优越性在于可以直接使用函数内的变量,不必申明。
func getSequence() func() int{ //返回值是一个函数
i:=0
return func() int{
i+=1
return i
}
}
// Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,
// 接受者可以是命名类型或者结构体类型的一个值或者是一个指针。
// 所有给定类型的方法属于该类型的方法集。语法格式如下:
type Circle struct{//这个就是类
radius float64//这个是类的属性
}
//该method属于Circle类型对象的方法
func(c Circle) getArea() float64{//这个是类的方法
return 3.14*c.radius*c.radius
}
func main() {
// 函数方法
var c1 Circle
c1.radius=10.00
fmt.Println("Area of Circle(c1) = ", c1.getArea())
var a int = 100
var b int = 200
var rtn int
rtn = max(a, b)
fmt.Println(rtn)
var firstName, lastName string = "niu", "bi"
firstName, lastName = swap(firstName, lastName)
fmt.Println(firstName, lastName)
swap2(&a, &b)
fmt.Printf("交换后,a 的值 : %d\n", a )
fmt.Printf("交换后,b 的值 : %d\n", b )
// 函数作为值,这就和C++中的东西有点像
getSquareRoot:=func(x float64) float64{
return math.Sqrt(x)
}
fmt.Println(getSquareRoot(9))
//函数闭包
nextNumber:=getSequence() //这个是返回的函数
fmt.Println(nextNumber()) //使用的时候要加括号
}
// 最大值函数
func max(num1, num2 int) int {
var result int
if num1 > num2 {
result = num1
} else {
result = num2
}
return result
}
// 返回多个值
func swap(x, y string) (string, string) {
return x, y
}
// 引用传递
func swap2(x *int, y *int){
var temp int
temp= *x
*x=*y
*y=temp //交换两个数的位置记住用三角形方法求解
}
Go语言学习四:函数和类
最新推荐文章于 2024-07-12 08:22:12 发布