mirror of
https://github.com/golang/go
synced 2024-11-14 06:20:23 -07:00
spec: clarify conditions for switch expression type
1. The existing prose implied that a switch expression type must be comparable because it is tested for equality against all case expressions. But for an empty switch (no case expressions), it was not clear if the switch expression needed to be comparable. Require it to match the behavior of compiler and type checkers. 2. While making this change, remove redundant language explaining what happens with untyped boolean switch expression values: the default type of an untyped boolean value is bool, this is already covered by the first part of the relevant sentence. Fixes #43200. Change-Id: Id8e0f29cfa8722b57cd2b7b58cba85b58c5f842b Reviewed-on: https://go-review.googlesource.com/c/go/+/314411 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
42812a2fee
commit
764f53eb6c
@ -1,6 +1,6 @@
|
|||||||
<!--{
|
<!--{
|
||||||
"Title": "The Go Programming Language Specification",
|
"Title": "The Go Programming Language Specification",
|
||||||
"Subtitle": "Version of Apr 21, 2021",
|
"Subtitle": "Version of Apr 28, 2021",
|
||||||
"Path": "/ref/spec"
|
"Path": "/ref/spec"
|
||||||
}-->
|
}-->
|
||||||
|
|
||||||
@ -4953,9 +4953,9 @@ ExprSwitchCase = "case" ExpressionList | "default" .
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
If the switch expression evaluates to an untyped constant, it is first implicitly
|
If the switch expression evaluates to an untyped constant, it is first implicitly
|
||||||
<a href="#Conversions">converted</a> to its <a href="#Constants">default type</a>;
|
<a href="#Conversions">converted</a> to its <a href="#Constants">default type</a>.
|
||||||
if it is an untyped boolean value, it is first implicitly converted to type <code>bool</code>.
|
|
||||||
The predeclared untyped value <code>nil</code> cannot be used as a switch expression.
|
The predeclared untyped value <code>nil</code> cannot be used as a switch expression.
|
||||||
|
The switch expression type must be <a href="#Comparison_operators">comparable</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
Loading…
Reference in New Issue
Block a user