golang方法的使用细节:参数默认是值拷贝,不仅仅是struct自定义数据类型也可以绑定方法、方法名称首字母大写为public权限、String()方法的使用

网友投稿 261 2022-08-23

golang方法的使用细节:参数默认是值拷贝,不仅仅是struct自定义数据类型也可以绑定方法、方法名称首字母大写为public权限、String()方法的使用

(1)结构体类型是值类型,在方法调用中,遵守值类型的传递机制,是​​值拷贝​​传递方式

(2)如程序员希望在方法中,改变结构体变量的值,可以通过结构体指针的方式来处理

我们写程序的时候,可以直接简化:

底层编译器做了优化,底层会自动帮我们加上​​& *​​

(3)Golang中的方法作用在指定的数据类型上的,和指定的数据类型绑定,因此自定义类型,都可以有方法,而不仅仅是struct,比如int , float32等都可以有方法

package mainimport "fmt"type integer intfunc (i integer) print(){ i = 30 fmt.Println("i = ",i)}func (i *integer) change(){ *i = 30 fmt.Println("i = ",*i)}func main(){ var i integer = 20 i.print() i.change() fmt.Println(i)}

(4)方法的访问范围控制的规则,和函数一样。方法名首字母小写,只能在本包访问,方法首字母大写,可以在本包和其它包访问。

(5)如果一个类型实现了​​String()​​​这个方法,那么​​fmt.Println​​默认会调用这个变量的String()进行输出

这个String()方法相当于java中的toString()方式

以后定义结构体的话,常定义String()作为输出结构体信息的方法,在fmt.Println会自动调用

package mainimport "fmt"type Student struct{ Name string Age int}func (s *Student) String() string{ str := fmt.Sprintf("Name = %v , Age = %v",s.Name,s.Age) return str}func main(){ stu := Student{ Name : "丽丽", Age : 20, } //传入地址,如果绑定了String方法就会自动调用 fmt.Println(&stu)}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:STM32MP157A驱动开发 | 05 - 基于LTDC接口驱动RGB LCD
下一篇:奥迪和刘德华涉“抄袭门”事件:数字营销时代下,4A“没戏唱”了?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~