golang 函数学习(一)

函数声明

golang 的函数声明包含func关键字、函数名、形式参数列表(可省略)、返回值列表及函数体

1
2
3
func FuncName(username string,age int){

}

最简单的函数定义如果,以func开头及函数名

1
2
3
func Simple(){
//表示该函数不需要输入参数,以及没有返回值
}

下面通过两个实例来介绍下函数的使用

1.计算两个数相加。定义一下funcAdd 函数,接收两个参数a,b 类型为int 返回值为int。函数调用时,以函数名()的形式进行调用。

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func funcAdd(a int, b int)int{
return a+b
}

func main(){
fmt.Println(funcAdd(3,5)) //输出结果为8
}

函数返回时还可以直接以变量的形式进行返回

1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func funcAdd(a int, b int) (result int){
result=a+b
return //直接输入return进行返回即可
}

func main(){
fmt.Println(funcAdd(7,8))
}

2.计算商品价格。定义一个函数名加ShopPrice,接收几个参数,并且返回商品价格。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import "fmt"

func ShopPrice(s_price,number,sale float64)(price float64){
//商品原价 * 数量 * 折扣
// 999.88 * 2 * 98/100
price = s_price * number * sale / 100.00
return
}

func main(){


fmt.Println(ShopPrice(999.25,2,98))

}

可以返回多个数据,传入商品名、价格、数量。最后返回商品及计算结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main

import "fmt"

func ShopDetail(s_price,number,sale float64,name string)(float64, string){
//商品原价 * 数量 * 折扣
// 999.88 * 2 * 98/100
price := s_price * number * sale / 100.00
return price,name
}


func main(){
price,name := ShopDetail(999.25,2,98,"大衣")
fmt.Println("商品:",name,"价格:",price)

}

函数多返回值

在go中,一个函数可以接收多个参数列表,同时也可以返回多个值,便于我们进行处理。

1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func AbcFunc(a,b,c int)(int,int,int){ //返回值为3个int数值
return c,b,a //将123 转成321输出
}

func main(){
c,b,a := AbcFunc(1,2,3)
fmt.Println(c,b,a)
}

空白符号的使用

如果在接收参数时,有不想使用的变量数值,可以使用_进行代替,程序不作处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import "fmt"

func nullValue(username string,age int,address string)(string,int,string){

return username,age,address
}


func main(){
//_用于接收任何类型的任何值,如果以“_”表示,那将省略,可以理解为垃圾桶
username,age,_ := nullValue("roddy",27,"sichuan")
fmt.Println(username,age)
}

函数可变参数

向函数传递一个未知数量的参数值时,可以使用…来代替,下面样例就是传递一个数字序列,然后分别打印出来例子。

1
2
3
4
5
6
7
8
9
10
11
func MultipleNumber(args ...int){
for i:=0;i<len(args);i++{
fmt.Println(args[i])
}
}


func main(){

MultipleNumber(1,2,3,5,4,5,6,6,7,8)
}

实例

输入一列数据,返回这组数据的最小值与最大值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main

import "fmt"

func MinMax(input ...int)(min,max int){
min = input[0]
max = input[0]

for i :=0;i<len(input);i++{
if input[i] < min{
min = input[i]
}

if input[i] >max {
max = input[i]
}
}
return
}

func main(){
min,max :=MinMax(1,2,34,5,6,7)
fmt.Println("最小值为:",min,"最大值为:",max)
}