方法和函数的区别
什么是方法?如何使用?
方法:作用在指定的数据类型上,即和指定的数据类型绑定,因此自定义类型都可以有方法,不只是struct
方法的使用:
// 定义一个结构体A
type A struct{
Num int
}
// 定义一个属于A的方法,该方法只能够被A调用
func (a A) test(){
fmt.Println(a.Num)
}
复制代码
方法调用过程和传参机制
方法和函数传参的区别的区别:
相同点: 在通过一个变量去调用方法时,其调用机制和函数一样
不同点: 变量调用方法时,该变量本身也会作为一个参数传递到方法(如果变量是值类型,则进行拷贝,如果是引用类型,则进行地址拷贝)
方法的注意事项
-
结构体类型如果是值类型,在方法调用中,遵守值传递机制,是值拷贝的方式;
-
如果希望在方法中修改变量的值,可以通过修改结构体的指针的方式来处理(效率更高);
-
Golang中的方法作用在指定的数据类上(和指定的数据类型绑定),因此自定义类型,都可以有方法,不只是struct,如int,float32等都可以有方法
type integer int func (i integer) print(){ fmt.Println("i=",i) } func main(){ var i integer = 10 i.print() } 复制代码
-
方法的访问控制范围的规则和函数一样,方法名首字母小写,只能在本包访问,方法首字母大写,可以在本包和其他包访问
-
如果一个类型实现了String()方法,那么fmt.Println默认会调用这个变量的String()输出
方法和函数的区别
-
调用方式不同
函数的调用方式: 函数名(实参列表)
方法的调用方式:变量 . 方法名(实参列表)
-
对于普通函数,接受者为值类型时,不能将指针类型的数据直接传递:值类型就只能传递值类型,指针类型就只能传递指针类型
-
对于方法,接收者伟值类型时,可以直接使用指针类型的变量调用方法,反过来也可以
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END