如何在Golang中自定义函数

发布时间:2021-01-25 17:24:08 作者:Leah
来源:亿速云 阅读:136

这篇文章将为大家详细讲解有关如何在Golang中自定义函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

参数首先分为无参函数有参。无参也就是没有参数

有参

func functionTest() {  # 小括号内就是用来放参数的
    # 函数体内
}

Go语言是强数据类型的语言,参数是要指定类型的不然就报错。func 是函数的声明关键字。

func 函数名(参数列表) 返回值类型 {函数体内部}

func addTwoNumber(a int, b int) int {
    return a + b
}

我们这里写了一个很简单的函数,把两个数相加并返回结果
这里我们要注意,参数的类型是写在参数名的后面,和变量定义是一样的。

func addTwoNumber(a int, b int)  (sum int) {
    return a+b
}

返回值的定义,是可以给返回值取一个名称的,还有一点是和其他的编程语言不一样的是在Go语言中函数的返回值可以有多个的。

func addTwoNumber(a int, b int)  (int, int) {
    return a+b, a-b
}

同时可以给返回值取一个别名

func addTwoNumber(a int, b int)  (sum, dif int) {
    return a+b, a-b
}

像这样给返回值取完名字后可以给返回值直接赋值

func addTwoNumber(a int, b int)  (sum, dif int) {
    sum = a+b
    dif = a-b
    return
}

同样这样也是可以直接返回sum,和dif两个值的。

同时Go语言也具有和c语言一样的匿名参数只做占位的作用,Go语言还不仅如此,还有声明变量可以占位的功能。

func addTwoNumber(int, b int)  (int, int) {
    return b, b
}
func main() {
    a, _, c := 1, 2, 3
    fmt.Println(a, c)
}

其中_是用来占位的,并不可以使用。
可变参数列表

func sum(numbers ...int) int {
    s := 0
    for i := range numbers{
        s += i
    }
    return s
}
func main() {
    fmt.Println(sum(1,2,3,4,5))
}

像这样我们就可以传给sum函数多个值了。

Go中的值传递,地址传递

在很多语言中,在调用函数或者是方法的时候,都是要考虑我们是传递值还是传递地址(在某些语言中叙述的是传递引用),到底是传递值还是传递地址这一概念是非常重要的,我们应该弄清楚。

我们用一个交换数的例子来讲解:

值传递

package main

import "fmt"

func swap(x, y int) {
    var temp = x
    x = y
    y = temp
}
func main() {
    a,b := 1,2
    swap(a,b)
    fmt.Println(a, b)
}

如何在Golang中自定义函数

地址传递

package main

import "fmt"

func swap(a, b *int) {
    var temp = *a
    *a = *b
    *b = temp
}
func main() {
    a,b := 1,2
    swap(&a,&b)
    fmt.Println(a, b)
}

如何在Golang中自定义函数

关于如何在Golang中自定义函数就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. 如何在golang中设置gopath
  2. 如何在python中调用自定义函数

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

golang

上一篇:bmob js-sdk怎么在vue中使用

下一篇:python中的闭包函数有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》