在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说,函数就是方法,方法就是函数。所以本节我旨在帮助大家理解Go语言中函数和方法的异同。
开始之前我们先系统学习一下函数和方法。
函数
Go语言和C语言一样也有函数的概念, Go语言中函数除了定义格式和不用声明以外,其它方面几乎和C语言一模一样
//函数定义
func 函数名称(形参列表)(返回值列表){
函数体;
}
//无参数无返回值函数
func say() {
fmt.Println("Hello World!!!")
}
//参数无返回值函数
func say(name string) {
fmt.Println("Hello ", name)
}
//无参数有返回值函数
func sum() int { // 只有一个返回值时,返回值列表的()可以省略
return 1 + 1
}
//有参数有返回值函数
func sum(a int, b int) int {
return a + b
}
Go函数与C语言函数的区别
//Go语言中可以给函数的返回值指定名称
// 给返回值指定了一个名称叫做res, return时会自动将函数体内部res作为返回值
// 其实本质就是提前定义了一个局部变量res, 在函数体中使用的res就是这个局部变量,返回的也是这个局部变量
func sum() (res int) {
res = 1 + 1
return
}
//Go语言中的函数允许有多个返回值函数
func calculate(a int, b int) (sum int, sub int) {
sum = a + b
sub = a - b
return
}
//相邻同类型形参OR返回值类型可以合并, 可以将数据类