GO语言:函数

90 阅读1分钟
package main

import "fmt"

//func 函数标识符
//add  函数名
//(a int, b int) 参数名以及参数类型
//int 函数返回值类型
func add(a int, b int) int {
	return a + b
}

func main(){
	fmt.Println(add(1, 2))
}
package main

import "fmt"

//(int, int):表示有两个函数返回值,第一个是int,第二个也是int
func addsub(a int, b int) (int, int) {
	return a + b, a - b
}

func main(){
	x, y := addsub(2, 4)
	fmt.Println(x, y)
}
函数的参数,返回值类型一般都需要指明(不可省略)
package main

import "fmt"

func changeNum(num int) {
	num = 1000
	fmt.Println(num, &num)
}

func main(){
	var num = 100
	changeNum(num)
	fmt.Println(num, &num)
        //值传递:传递了一个副本,并不是值本身,它们内存地址不同
}
package main

import "fmt"

func changeNum(num *int) {
	*num = 1000
	fmt.Println(*num, num)
}

func main(){
	var num = 100
	changeNum(&num)
	fmt.Println(num, &num)
        //由于传递的是地址,所以函数对值本身进行间接的操作
}
package main

import "fmt"

func main(){
        //自定义一个函数变量并初始化
	add := func (a int, b int) int {
		return a + b
	}
        /*
	var add = func (a int, b int) int {
		return a + b
	}
	*/
	fmt.Println(add(2, 2))
}
package main

import "fmt"

func main(){
        //返回一个函数func() int
	var add = func() func() int {
		return func() int {
			return 10
		}
	}

	fmt.Println(add()())
}