关于形参定义的一点想法

// Increment 当参数只有 1 个时,为 key,其值增加 1。
// 当参数有 2 个时,第一个参数为 key ,第二个参数为要增加的值 int64 类型。
func (rds RedisClient) Increment(parameters ...interface{}) bool {
    switch len(parameters) {
    case 1:
        key := parameters[0].(string)
        if err := rds.Client.Incr(rds.Context, key).Err(); err != nil {
            logger.ErrorString("Redis", "Increment", err.Error())
            return false
        }
    case 2:
        key := parameters[0].(string)
        value := parameters[1].(int64)
        if err := rds.Client.IncrBy(rds.Context, key, value).Err(); err != nil {
            logger.ErrorString("Redis", "Increment", err.Error())
            return false
        }
    default:
        logger.ErrorString("Redis", "Increment", "参数过多")
        return false
    }
    return true
}

// Decrement 当参数只有 1 个时,为 key,其值减去 1。
// 当参数有 2 个时,第一个参数为 key ,第二个参数为要减去的值 int64 类型。
...

对于课程里上面这段代码,有个疑问,既然第一个参数一定是 key string 类型,第二个值一定是value int64,那么入参写成下面这样会不会好一点?

// Increment 增加, 支持两个参数,第一个为 key,第二个为增加的值(可选)
// 如果只有一个参数,则为增加 1, 如果有第二个参数,则为增加该值
func (rds *RedisClient) Increment(key string, value ...int64) bool {
    switch len(value) {
    case 0:
        if err := rds.Client.Incr(rds.Context, key).Err(); err != nil {
            logger.ErrorString("Redis", "Incr", err.Error())
            return false
        }
    case 1:
        if err := rds.Client.IncrBy(rds.Context, key, value[0]).Err(); err != nil {
            logger.ErrorString("Redis", "IncrBy", err.Error())
            return false
        }
    default:
        logger.ErrorString("Redis", "Increment", "参数过多")
        return false
    }
    return true
}
go
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!