Golang中的自定义函数

栏目: Go · 发布时间: 7年前

内容简介:不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是,谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数。参数首先分为无参函数有参。无参也就是没有参数,也就不用写了。

不管是面向过程的编程,还是面向对象的编程,都离不开函数的概念,分别是, 参数函数名返回值 。接下来我们看看 Go 语言在这三个方面是做怎么操作的吧。

参数

谈到参数,我们在写函数或者是类中的方法的时候都需要考虑我们应该传递怎样的参数,或者是是否需要参数。

参数首先分为无参函数有参。无参也就是没有参数,也就不用写了。

有参

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中的自定义函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Understanding Machine Learning

Understanding Machine Learning

Shai Shalev-Shwartz、Shai Ben-David / Cambridge University Press / 2014 / USD 48.51

Machine learning is one of the fastest growing areas of computer science, with far-reaching applications. The aim of this textbook is to introduce machine learning, and the algorithmic paradigms it of......一起来看看 《Understanding Machine Learning》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具