请教一个关于switch问题

switch c := s[i]; true {
        case c == '.':
            if sawdot {
                return
            }
            sawdot = true
            dp = nd
            continue

        case '0' <= c && c <= '9':
            sawdigits = true
            if c == '0' && nd == 0 { // ignore leading zeros
                dp--
                continue
            }
            nd++
            if ndMant < uint64digits {
                mantissa *= 10
                mantissa += uint64(c - '0')
                ndMant++
            } else if s[i] != '0' {
                trunc = true
            }
            continue
        }

此处这个 switch 用法怎么理解呢

已邀请:

hey

赞同来自: root666

switch a {
    case 1:
}
switch 1 {
    case a:
}
switch true {
    case true:
}

root666 - 90后

赞同来自: solar

相当于

c := s[i]
switch true {
case c == '.':
// ...
case '0' <= c && c <= '9':
// ...
case Foo:
// ...
}

相当于

if c == '.' {
    // ...
} else if '0' <= c && c <= '9'{
    // ...
} else if c == Foo {
    // ...
}

solar - 91小泥人

赞同来自:

不知道如何删帖。。。我感觉最近萌萌的。

haoc7

赞同来自:

嘻嘻,你这个continue 是什么鬼?外部有循环吧。

wuhan

赞同来自:

switch c := s[i]; true {

没看懂这个true的作用

要回复问题请先登录注册