关于数据库ID类型, 以及函数interface{}参数的一些疑问?

问题1:
数据库主键肯定是uint的, 而我看了大量案例,都使用的是struct{Id int}, 诚然int足够用, 但这种写法是否不恰当?

问题2: 数字转换为字符串是非常常用的函数, 下面这种写法使用interface{}做参数, 然后断言, 这样写是否影响性能呢?
`

func String(ii interface{}) (str string)
    switch i :=ii.(type) {
    case in
        str, _ = strconv.FormatInt(i, 0)
    case int64:
        str, _ = strconv.FormatInt(i, 64)
    case int8:
        str, _ = strconv.FormatInt(i, 8)
    case uint:
        str, _ = strconv.FormatUint(i, 0)
    case uint64:
        str, _ = strconv.FormatUint(i, 64)
    case uint8:
        str, _ = strconv.FormatUint(i, 8)
    ...............
    default:
        panic("String()的参数类型暂不支持, 请扩充!")
    }
    return str
}`

共 1 个回复


coldwater

没啥影响,interface{} 实际上就是一个结构体,有两个字段,值,类型,断言就比较一下类型是非相等,有多大开销呢?

# 0