gpt4 book ai didi

go - 如何使用可变数量的项目转换 []string?

转载 作者:IT王子 更新时间:2023-10-29 01:23:25 26 4
gpt4 key购买 nike

我正在尝试解析日志字符串,其中字段用“|”粘合字符。所有日志假设有 20 个字段,但有些日志更少。我不想丢弃它们,而是用日志字符串中的任何信息填充 Log{}

type Log struct {
Field1 string
Field2 uint64
Field3 string
// ...
Field20 string
}

知道不可能检查索引是否存在于 slice 中,这看起来不是最优的:

log := Log{}
c := len(fields)

if c > 0 {
log.Field1 = fields[0]
}

if c > 1 {
log.Field2, _ = strconv.ParseUint(fields[1], 0, 64)
}

if c > 3 {
log.Field3 = fields[2]
}

//...

有什么更好的方法吗?

谢谢

最佳答案

一种选择是使用 switchfallthrough :

switch len(fields) {
case 20:
log.Field20 = something(fields[19])
fallthrough

// ...

case 3:
log.Field3 = fields[2]
fallthrough
case 2:
log.Field2, _ = strconv.ParseUint(fields[1], 0, 64)
fallthrough
case 1:
log.Field1 = fields[0]
}

playground example (感谢@mkopriva 开始示例)

关于go - 如何使用可变数量的项目转换 []string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47381918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com