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 //交换两个数的位置记住用三角形方法求解 }
相关文章推荐
- uva11292-Dragon of Loowater
- Django文件下载,解决Django中文名问题
- [SIMD]单指令多数据指令集(二)—— SIMD指令集在非对称算法中的应用
- Go语言学习三 :循环语句
- golang 获取exe、dll、apk 版本号
- UVA 11090 Going in Cycle!!
- Go语言学习二 :常数和条件语句
- Codeforces 658 C. Bear and Forgotten Tree 3(树的构造)
- tinyos之 fan out( but there is no combine function specified for ***)
- 【Algorithm】插入排序法
- Go语言学习一 :基础语句
- Google文件系统(转自维基百科)
- 使用Google语音识别引擎(Google Speech API)
- mongo 主从
- uva11090Going in Cycle!!【bellman二分判负环】
- codeforces 658C Bear and Forgotten Tree 3构造-多么痛的领悟
- Django表单API
- Google Fonts导致WordPress 速度问题
- 使用google guava做内存缓存
- 免费的代理来了,使用百度浏览器可免费使用google搜索