golang小技巧:返回值简写,func (c *Struct)FunName与func (c Struct)FunName区别
本文介绍golang中的返回值有一个语法糖,可以帮助我们减少代码量;
1 | func loadConfigYaml(f string) (defaultConfig yamlConfig) |
同时还介绍func (c *Struct)FunName与func (c Struct)FunName区别
golang返回值变量:
golang可以将欲返回的变量值写在函数末尾,并作为一个作用域为函数体内的变量
例如:
1 | func loadConfigYaml(f string) (defaultConfig yamlConfig) { |
此时,我们在函数的末尾使用return时可以不带变量名(返回的值).
这是常规写法,也是大多数编程语言的思维 :定义一个返回内容的变量,赋值后返回
1 | func loadConfigYaml(f string) yamlConfig { |
func 后接的括号里带*与不带*的区别
在golang中,func 后接一个括号代表是这个结构体(接口)的方法,类似于C++的 classA::func(string a);
即func (b className)func(a string)<==>classA::func(string a);
其中golang代码中的b指代这个结构体对象,类似于Python中的self,c++/java的this
带*表示传递这个对象中的一切通过指针传递,最常用的特性就是可以修改值;不带*表示使用值传递方式,如果要修改结构体中属性的值,则不会生效.
1 | package main |
执行代码:
1 | $ go run main.go |
在go中,并不推荐同时使用func (s myStruct) 与func (s *myStruct),这两种选其一即可.
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.