Go语言中的函数怎么调用


本篇内容介绍了“Go语言中的函数怎么调用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!有意思的是Go语言的返回值可以有多个,并且放在了参数列表后面,而C#等都是在函数名之前,也没有关键字。很好奇为什么没有public private等关键字,那函数怎么才能定义为公用和私有呢?Go语言有这样的规则:小写字母开头的函数只在本包内可见,大写字母开头的函数才能被其他包使用。这个规则也适用于类型和变量的可见性。不定参数是指函数传入的参数个数为不定数量。函数myfunc()接受不定数量的参数,这些参数的类型全部是int※形如…type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数。它是一个语法糖(syntactic sugar),即这种语法对语言的功能并没有影响,但是更方便程序员使用。从内部实现机理上来说,类型…type本质上是一个数组切片,也就是[]type,这也是为什么上面的参数args可以用for循环来获得每个传入的参数。不定参数的传递对应上面的这个函数,传递参数可以为下面两种任意类型的不定参数可以看到 fmt.Println()方法接受了不定参数,但它是 …interface{}用interface{}传递任意类型数据是Go语言的惯例用法。Go语言函数可以返回多个返回值如果调用方调用了一个具有多返回值的方法,但是却不想关心其中的某个返回值,可以简单地用一个下划线“_”来跳过这个返回值Go语言支持随时在代码里定义匿名函数。匿名函数由一个不带函数名的函数声明和函数体组成匿名函数可以直接赋值给一个变量或者直接执行:(有点像js哈)结果:i, j: 10, 5
i, j: 10, 101—“…func()(func()) {…..”表明此匿名函数返回值的类型是func(), 即此匿名函数返回一个函数指针(此处引用一下c 的概念);2—“…returnfunc() {fmt.Printf(“i, j: %d, %dn”, i, j)}…”表明返回的函数指针指向一个打印i, j: %d, %dn的函数;3—“…a := func()(func()) {…}()…”末尾的括号表明匿名函数被调用,并将返回的函数指针赋给变量a ;综合来看:此代码片段的意思”等价于”至于为何要用匿名函数如此的转一圈,是因为要引用闭包的概念,此概念省略不表,多写点代码试试就能体会了。①配合struct,创建一个新的结构,类似C#里面的Class②配合既存的类型(int64…)免费云主机域名,创建一个新的类型,类似C++里面的typedef结果:方法能给用户定义的类型添加新的行为。方法实际上也是函数,只是在声明时,在关键字func 和方法名之间增加了一个参数例如:这是函数,它的调用就是直接在使用的时候 传入参数获取返回值就行这是方法结果:========通过传地址ChangeName之后==========
方法执行之前name BigOrange
方法执行之后name BigBanana
方法返回之后Name BigBanana
========通过传值ChangeName之后===========
方法执行之前name BigApple
方法执行之后name BigPear
方法返回之后Name BigApple上面的例子中分别使用了函数和方法进行获取学生姓名分别使用了传值和传地址的方式对学生名称进行修正① Go语言中的方法,相比于函数,多了一个接收者参数② Go 语言里有两种类型的接收者:值接收者和指针接收者方法如果使用 值接收者,那么调用者可以是值接收者类型、也可以是它的指针类型,请看下面的例子(补充上例):结果:========使用指针来调用值类型声明的接收者方法===========
name bigGrape
========通过传值ChangeName之后===========
方法执行之前name bigGrape
方法执行之后name BigXXXX
方法返回之后Name bigGrape如上代码 使用了&获取地址,所以bigGrape是一个student类型的指针。下面的代码和上例一样,直接使用了【变量.方法】的方式调用方法,结果也和值类型调用的一样。为什么?【Go 在代码背后的执行动作】Go 编译器为了支持这种方法调用背后做的事情。【指针被解引用为值】,这样就符合了值接收者的要求。再强调一次,getStudentName 操作的是一个副本,只不过这次操作的是从bigGrape指针指向的值的副本。同理还记得上面的,这句代码吗?对bigOrange这个变量修改了名称bigOrange和bigApple明显是值类型,但是 changeStudentName 接收者是一个指针类型,为什么能调用,也是基于Go代码背后的执行动作,将值类型取了地址。所以对于Go语言调用方法的类型,使用值或者指针都是可以的,不用拘泥于类型。“Go语言中的函数怎么调用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: Vue如何实现router传参

本文小编为大家详细介绍“Vue如何实现router传参”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue如何实现router传参”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。vue-router 参数传递的方式Parma传参贴代…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/20 17:45
下一篇 03/20 17:46

相关推荐