您的位置:首页 > 编程语言 > Go语言

Go语言学习四:函数和类

2016-03-29 22:19 417 查看
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 //交换两个数的位置记住用三角形方法求解

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: