Golang开发-函数的使用

Go 语言最少有个 main() 函数。
函数声明告诉了编译器函数的名称,返回类型,和参数。
定义:

func function_name( [parameter list] ) [return_types] {
   函数体
}

func:函数由 func 开始声明
function_name:函数名称
parameter list:参数列表,指定参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。(没有返回值的函数不需要)
函数体:函数定义的代码集合

package main

import "fmt"

func main() {
   var x,y,z int
   x,y,z=1,6,3
   var res int
   res=mymax(x,y,z)
   fmt.Println(x,",",y,"和",z,"的最大值为:",res)
}


func mymax(a,b,c int) int{
	var res,tmp int
	if (a>b){
		tmp=a
	}else{
		tmp=b
	}
	if(tmp>c){
		res=tmp
	}else{
		res=tmp
	}
	return res
}
//1 , 6 和 3 的最大值为: 6

函数作为实参
在main函数中创建函数mymax作为实参

package main

import "fmt"

func main() {
   var x,y,z int
   x,y,z=1,6,3
   mymax:=func(a,b,c int) int{
	var res,tmp int
	if (a>b){
		tmp=a
	}else{
		tmp=b
	}
	if(tmp>c){
		res=tmp
	}else{
		res=tmp
	}
	return res
}
   fmt.Println(x,",",y,"和",z,"的最大值为:",mymax(x,y,z))
}
//1 , 6 和 3 的最大值为: 6

方法
方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。

func (variable_name variable_data_type) function_name() [return_type]{
   /* 函数体*/
}
package main

import "fmt"

/* 定义结构体 */
type Circle struct {
  radius float64
}

func main() {
  var c1 Circle
  c1.radius = 4
  fmt.Println("Area of Circle = ", c1.getArea())
}

//Circle 类型对象中的方法
func (c Circle) getArea() float64 {
  //c.radius 即为 Circle 类型对象中的属性
  return 3.14 * c.radius * c.radius
}
//Area of Circle =  50.24

闭包
Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。
举例:创建了函数add(),返回另外一个函数。该函数的目的是在闭包中递增 i 变量

package main

import "fmt"
func main() {
    add_func := add(1,2)
    fmt.Println(add_func())
    fmt.Println(add_func())
    fmt.Println(add_func())
	
	add_func2 := add(4,5)
    fmt.Println(add_func2())
    fmt.Println(add_func2())
    fmt.Println(add_func2())
}

// 闭包使用方法
func add(x1, x2 int) func()(int,int)  {
    i := 0
    return func() (int,int){
        i++
        return i,x1+x2
    }
}

/*
1 3
2 3
3 3
1 9
2 9
3 9
*/

你可能感兴趣的:(go,golang)