• 5. Go函数


    【定义函数】

    直接上一个栗子,Go语言定义函数:

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

    一目了然,还不太习惯Go语言的命名方式, 类型为什么要写到后面?

    【多个返回值】

    Go函数还可以返回多个值:

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

    【命名返回值】

    func add(a int, b int) (c int) {
        c = a + b
        return
    }

    按照网上的说法,命名返回值就是,如上面的代码。函数会自动定义c,并且自动返回c。

    【多个相同类型】

    如果函数参数有多个相同的类型,那么写一个就可以了,命名返回值也适用。

    func add(a, b int) (c int) {
        c = a + b
        return
    }
    

    【空白符】

    函数返回多个参数,而我们只需要用到其中一个,其他参数不需要的时候可以使用空白符  '_',一个下划线。

    package main 
    
    import (
        "fmt"
    )
    
    func add(a, b int) (c, d int) {
        c = a + b
        d = a * b
        return
    }
    
    func main() {
        c, _ := add(3, 4)
        fmt.Printf("c = %v
    ", c)
    }

    【可变参数函数】

    可变参数函数很好理解了,类似C语言中的printf之类的,之后可以传入任意数量的参数。

    Go语言的定义是这样的,如果函数最后一个参数被记作 ...T ,这时函数可以接受任意个 T 类型参数作为最后一个参数。

    只有一最后一个参数被记作...T,才可以是可变参数,先上一个Demo理解一下。

    package main
    
    import (
        "fmt"
    )
    
    func my_print(values ...int) {
        for _, v := range values {
            fmt.Println(v)
        }
    }
    func main() {
        my_print(1, 2, 3)
    }
    

    my_print中的参数values相当于一个int切片,但是这里有个问题,只能传一样的类型吗?

  • 相关阅读:
    python正则表达式(+ {})(二)
    14丨 HTTP有哪些优点?又有哪些缺点?
    python正则表达式(. *)(一)
    12丨响应状态码该怎么用?
    Fiddler—Fiddler+willow插件应用(十四)
    11丨你能写出正确的网址吗?
    【洛谷P1858】多人背包
    【洛谷P3387】(模板)缩点
    【洛谷P2184】贪婪大陆
    Leetcode: 39. Combination Sum
  • 原文地址:https://www.cnblogs.com/hatsusakana/p/9810199.html
Copyright © 2020-2023  润新知