GO学习笔记 - 函数名前面是否有输入参数肯定是不一样的!!
2017-02-10 00:21
661 查看
在刚接触GO语言时候,我相信你也会有这种困惑,为什么有的函数名前面有输入参数,而一些却没有,它们是否有差别?确实有差别,没有输入参数,是一般的函数;有输入参数,是结构的方法,输入参数叫做“方法接收者”!GO语言没有类,方法都定义在结构上了!!
官方教程:
函 数:https://tour.go-zh.org/basics/4
结构体方法:https://tour.go-zh.org/methods/1
实例代码:
main.go : 引入了“sunylat/demo”包,调用ShowStructFunc() 演示调用结构体函数。
demo/structFunc.go : 调用mydata包ShowStructFunc()
mydata/export.go : 定义了两个结构方法,返回值不一样 ;定义了一个普通函数,用于区别结构方法和普通函数。
运行结果截图:
官方教程:
函 数:https://tour.go-zh.org/basics/4
结构体方法:https://tour.go-zh.org/methods/1
实例代码:
main.go : 引入了“sunylat/demo”包,调用ShowStructFunc() 演示调用结构体函数。
package main import( "sunylat/demo" ) func main() { //演示结构函数 demo.ShowStructFunc() }
demo/structFunc.go : 调用mydata包ShowStructFunc()
package demo import ( "sunylat/mydata" "fmt" ) func ShowStructFunc() { //声明结构函数输入的变量 var ( idIn string nameIn string ) //给结构函数输入的变量赋值 idIn = "this is id" nameIn = "this is name" //得到结构 ts := &mydata.TestStruct{} //调用结构函数1 idOut, nameOut := ts.StructFunc(idIn, nameIn) fmt.Println("StructFunc 函数输出\n id : " + idOut + "\n name : " + nameOut) //----------------------------------------------------------------------- fmt.Println("-----------------------------------------------------------------------") //调用结构函数2 ts2:=ts.StructFunc2(idIn, nameIn) fmt.Println("StructFunc2 函数输出\n id : " + ts2.Id + "\n name : " + ts2.Name) //----------------------------------------------------------------------- fmt.Println("-----------------------------------------------------------------------") //调用普通函数 outPut:=mydata.OrdinaryFunc("this is ","OrdinaryFunc()") fmt.Println("OrdinaryFunc 函数输出\n "+outPut) }
mydata/export.go : 定义了两个结构方法,返回值不一样 ;定义了一个普通函数,用于区别结构方法和普通函数。
package mydata //自定义的结构,首字母大写可以被导出,包括里面的字段首字母大写才被输出 type TestStruct struct { Id string Name string } //这是一个结构函数,返回两个值,输入为方法接收者 func (ts *TestStruct) StructFunc (idIn,nameIn string) (idOut,nameOut string){ ts.Id=idIn; ts.Name=nameIn; return ts.Id,ts.Name } //这是另外一个结构函数,返回结构,输入为方法接收者 func (ts *TestStruct) StructFunc2 (idIn,nameIn string) TestStruct{ ts.Id=idIn; ts.Name=nameIn; return *ts } //这是普通函数,函数名前面没有方法接收者 func OrdinaryFunc (input1,input2 string) (outPut string){ temp:=input1+input2 return temp }
运行结果截图:
相关文章推荐
- C语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数
- Perl脚本学习经验(一)------如何判断执行脚本时的输入参数是否正确
- Python学习笔记--《简明Python教程》之默认函数参数和关键参数函数
- python学习笔记——函数可变参数处理
- C++中函数的返回值作为函数的参数学习笔记
- C/C++学习笔记12:数组作为函数参数
- Go语言学习笔记(五) [函数]
- python函数参数学习笔记
- Perl学习笔记 之 [ 函数, 参数, @_, $_, $_[0], shift ]
- Go语言学习笔记(五) [函数]
- Flex与As3学习笔记之:Part 3 函数参数、字符串处理、日期与时间类型
- Go语言学习笔记---函数
- 黑马程序员之WinForm编程基础学习笔记:修改密码。界面上有旧密码,新密码,重复新密码,假设旧密码为888888,两次输入的新密码必须和旧密码不一样,并且两次输入的新密码必须一致。
- C++ primer学习笔记_6_函数---函数定义、参数传递
- Effective C++学习笔记:在函数重载和设定参数缺省值间慎重选择
- [C#学习笔记之多线程1]使用ParameterizedThreadStart委托向线程函数传送参数
- C语言学习笔记.指针3--指针变量作为函数参数
- 函数参数Windows程序设计_Chap01_起步_学习笔记
- Shell 编程学习笔记:脚本输入参数
- Ferris这个教程学习笔记:js示例2.2:函数接收参数并弹出