函数声明
golang 的函数声明包含func关键字、函数名、形式参数列表(可省略)、返回值列表及函数体
1 2 3
| func FuncName(username string,age int){
}
|
最简单的函数定义如果,以func开头及函数名
下面通过两个实例来介绍下函数的使用
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)) }
|
函数返回时还可以直接以变量的形式进行返回
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 }
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){ 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){ 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){ return c,b,a }
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) }
|