关于可变参数的理解和练习

作者: 大雁儿 | 来源:发表于2017-01-20 12:53 被阅读24次

《Go并发编程实践》在介绍数据类型时提过可变长参,理论说明如下图所示

Paste_Image.png

书上太过理论了,不助于理解,因为我就一直理解不了,所以翻阅了其他的资料,帮助自己消化这个内容。
也有幸找到了非常好的教程:http://www.shinley.com/ch5/ch5-07.html 大家可以点击这个查看详细内容,这个GO语言圣经的教程非常适合入门者学习和练习。
我自己在看完后尝试做了练习5.15,通过不断地试错和优化整理出了以下关于可变参数取最大值、最小值的初级代码

package main

import (
    "fmt"
)
//网页实例
func sum(vals...int)int {
    total := 1
    for _, val := range vals {
        total += val
    }
    return total
}
//根据可变长参特点优化代码
func max(vals ...int)  {
    length:=len(vals)
    fmt.Println("The length:",length)
    if length!=0{
        res:=vals[0]
        for _,val:=range vals{
            if res<=val{
                res=val
            }
        }
        fmt.Println("The max:",res)
    }else {
        fmt.Println("The vals is nil")
    }
}
func min(vals ...int)  {
    length:=len(vals)
    fmt.Println("The length:",length)
    if length!=0{
        res:=vals[0]
        for _,val:=range vals{
            if res>=val{
                res=val
            }
        }
        fmt.Println("The min:",res)
    }else {
        fmt.Println("The vals is nil")
    }
}
func main() {
    fmt.Println("The total:",sum(8,9,10,11))
    max(100,2,3,16,19)
    min(-1,8,20,-100,-200)
    max(25,9,18)
    max()
    min(35,1,58,2,19,58,1)
    min()
}

运行结果:

The total: 39
The length: 5
The max: 100
The length: 5
The min: -200
The length: 10
The max: 58
The length: 0
The vals is nil
The length: 7
The min: 1
The length: 0
The vals is nil

上面是我的初次尝试,逻辑过程非常中规中矩,所以代码看上去非常繁琐。
思路:
1.比较大小就从第一个开始,一个一个比,所有的数据都比较完成后输出结果
2.可变长参数存储时会自动生成slice,所以有一个自带的循环,利用这点实现比较
3.可变长参数需要考虑为空的情况,这个容易引起运行恐慌,我也是在运行出现很多次运行恐慌后才领悟的

相关文章

  • 关于可变参数的理解和练习

    《Go并发编程实践》在介绍数据类型时提过可变长参,理论说明如下图所示 书上太过理论了,不助于理解,因为我就一直理解...

  • Python实战:函数

    Python中函数的声明格式: 例如: 函数的调用: 关于位置参数、关键字参数、可变参数和不可变参数 位置参数:参...

  • 可变参数和不可变参数

    可变参数:列表,集合,字典 结论:函数传递可变参数时,会将包括索引在内的整体传递进去,当函数内部对参数进行修改时,...

  • 函数的,参数,变量作用域,递归,匿名函数

    一:函数参数的介绍 1:可变和不可变参数 1.1:必选参数 1.2:默认参数 1.3:可变参数 1.4:关键字参数...

  • python函数回顾

    1.参数的介绍 (1)可变和不可变参数 (2)必选参数 (3)默认参数 (4)可变参数 (5)关键字参数 1.1....

  • 5.OnChanges钩子

    在父组件初始化或修改子组件的参数时调用,为了理解这个方法为什么会调用,要理解可变对象和不可变对象,字符串是不可变的...

  • 4.浅拷贝与深拷贝

    可变(mutable)参数和不可变(immutable)参数 在Python中string、tuple和numbe...

  • Lua可变参数

    Lua 函数可以接受可变数目的参数,和 C 语言类似,在函数参数列表中使用...表示函数有可变的参数。 把可变参数...

  • 元组、字典可变参数

    可变参数 需求: 参数数量不确定,能否接收? args元组可变参数 kwargs字典可变参数 传递可变参数

  • Python 学习杂记

    可变参数 可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个 定义可变参数和定义一个lis...

网友评论

    本文标题:关于可变参数的理解和练习

    本文链接:https://www.haomeiwen.com/subject/vgywbttx.html