• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

GO学习笔记-函数名前面是否有输入参数肯定是不一样的!!

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在刚接触GO语言时候,我相信你也会有这种困惑,为什么有的函数名前面有输入参数,而一些却没有,它们是否有差别?确实有差别,没有输入参数,是一般的函数;有输入参数,是结构的方法,输入参数叫做“方法接收者”!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
}

运行结果截图:

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go3--常量和类型转换发布时间:2022-07-10
下一篇:
go解leetcode[两数之和][1]发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap