Go语言学习四:函数和类

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 //交换两个数的位置记住用三角形方法求解

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值