On Tue, Mar 18, 2025 at 4:51 PM Mike Schinkel <[email protected]> wrote:
>
> While working on a parser, I've repeatedly encountered patterns like:
>
> if c == ' ' || c == '\t' { /* handle whitespace */ }
> if token == EOL || token == EOF { /* handle end markers */ }
> if lexer.Type == TextLine || lexer.Type == WhitespaceLine { /* handle
> lines */ }
>
> Go already allows multiple values in case statements:
>
> switch c {
> case ' ', '\t':
> /* handle whitespace */
> }
>
> I'm wondering if there could be a more elegant way to express this pattern in
> Go, perhaps something conceptually similar to:
>
> if c [some_syntax] ' ', '\t' { /* handle whitespace */ }
>
> Do you think that the Go team would be likely to consider such a proposal, or
> would taking the time to prepare and submit a proposal likely just be for
> naught?
>
> If this seems worthy of a proposal, what syntax do you think might be the
> best fit for the Go language?
We can already write
func Is[T comparable](s T, vals ...T) bool {
for _, v := range vals {
if s == v {
return true
}
}
return false
}
and then we can write
if Is(c, ' ', '\t') {
...
}
So I don't see a big need for additional syntax here.
Ian
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/golang-nuts/CAOyqgcV1YH9jV4y%2BRYe5%3DUB5jNk6iGhMnxc0orxVZixVFYUC1Q%40mail.gmail.com.