Edits and generation for type switch update
This commit is contained in:
parent
bee8f55277
commit
a3b3bff8cb
@ -10,7 +10,7 @@ func main() {
|
|||||||
|
|
||||||
// Here's a basic `switch`.
|
// Here's a basic `switch`.
|
||||||
i := 2
|
i := 2
|
||||||
fmt.Print("write ", i, " as ")
|
fmt.Print("Write ", i, " as ")
|
||||||
switch i {
|
switch i {
|
||||||
case 1:
|
case 1:
|
||||||
fmt.Println("one")
|
fmt.Println("one")
|
||||||
@ -25,9 +25,9 @@ func main() {
|
|||||||
// `default` case in this example as well.
|
// `default` case in this example as well.
|
||||||
switch time.Now().Weekday() {
|
switch time.Now().Weekday() {
|
||||||
case time.Saturday, time.Sunday:
|
case time.Saturday, time.Sunday:
|
||||||
fmt.Println("it's the weekend")
|
fmt.Println("It's the weekend")
|
||||||
default:
|
default:
|
||||||
fmt.Println("it's a weekday")
|
fmt.Println("It's a weekday")
|
||||||
}
|
}
|
||||||
|
|
||||||
// `switch` without an expression is an alternate way
|
// `switch` without an expression is an alternate way
|
||||||
@ -36,26 +36,26 @@ func main() {
|
|||||||
t := time.Now()
|
t := time.Now()
|
||||||
switch {
|
switch {
|
||||||
case t.Hour() < 12:
|
case t.Hour() < 12:
|
||||||
fmt.Println("it's before noon")
|
fmt.Println("It's before noon")
|
||||||
default:
|
default:
|
||||||
fmt.Println("it's after noon")
|
fmt.Println("It's after noon")
|
||||||
}
|
}
|
||||||
|
|
||||||
// A type `switch` compares types instead of values. You
|
// A type `switch` compares types instead of values. You
|
||||||
// can use this to discover the the type of an interface
|
// can use this to discover the the type of an interface
|
||||||
// value. In this example, the variable `t` will have the
|
// value. In this example, the variable `t` will have the
|
||||||
// type corresponding to its clause.
|
// type corresponding to its clause.
|
||||||
whatAmI := func(i interface{}) string {
|
whatAmI := func(i interface{}) {
|
||||||
switch t := i.(type) {
|
switch t := i.(type) {
|
||||||
case bool:
|
case bool:
|
||||||
return "I am a bool"
|
fmt.Println("I'm a bool")
|
||||||
case int:
|
case int:
|
||||||
return "I am an int"
|
fmt.Println("I'm an int")
|
||||||
default:
|
default:
|
||||||
return fmt.Sprintf("Can't handle type %T", t)
|
fmt.Printf("Don't know type %T\n", t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println(whatAmI(1))
|
whatAmI(true)
|
||||||
fmt.Println(whatAmI(true))
|
whatAmI(1)
|
||||||
fmt.Println(whatAmI("hey"))
|
whatAmI("hey")
|
||||||
}
|
}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
1040d0721b871f78f221a0e9e4a61ea3b0e6de70
|
d255a1fe931fe471b745aeb66830b10216617479
|
||||||
8b5CajPcHn
|
kxkBPpY_ue
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
$ go run switch.go
|
$ go run switch.go
|
||||||
write 2 as two
|
Write 2 as two
|
||||||
it's the weekend
|
It's a weekday
|
||||||
it's before noon
|
It's after noon
|
||||||
I am an int
|
I'm a bool
|
||||||
I am a bool
|
I'm an int
|
||||||
Can't handle type string
|
Don't know type string
|
||||||
|
@ -40,7 +40,7 @@ branches.</p>
|
|||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td class="code leading">
|
<td class="code leading">
|
||||||
<a href="http://play.golang.org/p/8b5CajPcHn"><img title="Run code" src="play.png" class="run" /></a>
|
<a href="http://play.golang.org/p/kxkBPpY_ue"><img title="Run code" src="play.png" class="run" /></a>
|
||||||
<div class="highlight"><pre><span class="kn">package</span> <span class="nx">main</span>
|
<div class="highlight"><pre><span class="kn">package</span> <span class="nx">main</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ branches.</p>
|
|||||||
<td class="code leading">
|
<td class="code leading">
|
||||||
|
|
||||||
<div class="highlight"><pre> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">2</span>
|
<div class="highlight"><pre> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">2</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Print</span><span class="p">(</span><span class="s">"write "</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">" as "</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Print</span><span class="p">(</span><span class="s">"Write "</span><span class="p">,</span> <span class="nx">i</span><span class="p">,</span> <span class="s">" as "</span><span class="p">)</span>
|
||||||
<span class="k">switch</span> <span class="nx">i</span> <span class="p">{</span>
|
<span class="k">switch</span> <span class="nx">i</span> <span class="p">{</span>
|
||||||
<span class="k">case</span> <span class="mi">1</span><span class="p">:</span>
|
<span class="k">case</span> <span class="mi">1</span><span class="p">:</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"one"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"one"</span><span class="p">)</span>
|
||||||
@ -105,9 +105,9 @@ in the same <code>case</code> statement. We use the optional
|
|||||||
|
|
||||||
<div class="highlight"><pre> <span class="k">switch</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Now</span><span class="p">().</span><span class="nx">Weekday</span><span class="p">()</span> <span class="p">{</span>
|
<div class="highlight"><pre> <span class="k">switch</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Now</span><span class="p">().</span><span class="nx">Weekday</span><span class="p">()</span> <span class="p">{</span>
|
||||||
<span class="k">case</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Saturday</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Sunday</span><span class="p">:</span>
|
<span class="k">case</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Saturday</span><span class="p">,</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Sunday</span><span class="p">:</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"it's the weekend"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"It's the weekend"</span><span class="p">)</span>
|
||||||
<span class="k">default</span><span class="p">:</span>
|
<span class="k">default</span><span class="p">:</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"it's a weekday"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"It's a weekday"</span><span class="p">)</span>
|
||||||
<span class="p">}</span>
|
<span class="p">}</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
@ -121,15 +121,43 @@ to express if/else logic. Here we also show how the
|
|||||||
<code>case</code> expressions can be non-constants.</p>
|
<code>case</code> expressions can be non-constants.</p>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
<td class="code">
|
<td class="code leading">
|
||||||
|
|
||||||
<div class="highlight"><pre> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Now</span><span class="p">()</span>
|
<div class="highlight"><pre> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Now</span><span class="p">()</span>
|
||||||
<span class="k">switch</span> <span class="p">{</span>
|
<span class="k">switch</span> <span class="p">{</span>
|
||||||
<span class="k">case</span> <span class="nx">t</span><span class="p">.</span><span class="nx">Hour</span><span class="p">()</span> <span class="p"><</span> <span class="mi">12</span><span class="p">:</span>
|
<span class="k">case</span> <span class="nx">t</span><span class="p">.</span><span class="nx">Hour</span><span class="p">()</span> <span class="p"><</span> <span class="mi">12</span><span class="p">:</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"it's before noon"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"It's before noon"</span><span class="p">)</span>
|
||||||
<span class="k">default</span><span class="p">:</span>
|
<span class="k">default</span><span class="p">:</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"it's after noon"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"It's after noon"</span><span class="p">)</span>
|
||||||
<span class="p">}</span>
|
<span class="p">}</span>
|
||||||
|
</pre></div>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="docs">
|
||||||
|
<p>A type <code>switch</code> compares types instead of values. You
|
||||||
|
can use this to discover the the type of an interface
|
||||||
|
value. In this example, the variable <code>t</code> will have the
|
||||||
|
type corresponding to its clause.</p>
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td class="code">
|
||||||
|
|
||||||
|
<div class="highlight"><pre> <span class="nx">whatAmI</span> <span class="o">:=</span> <span class="kd">func</span><span class="p">(</span><span class="nx">i</span> <span class="kd">interface</span><span class="p">{})</span> <span class="p">{</span>
|
||||||
|
<span class="k">switch</span> <span class="nx">t</span> <span class="o">:=</span> <span class="nx">i</span><span class="p">.(</span><span class="kd">type</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
<span class="k">case</span> <span class="kt">bool</span><span class="p">:</span>
|
||||||
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"I'm a bool"</span><span class="p">)</span>
|
||||||
|
<span class="k">case</span> <span class="kt">int</span><span class="p">:</span>
|
||||||
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"I'm an int"</span><span class="p">)</span>
|
||||||
|
<span class="k">default</span><span class="p">:</span>
|
||||||
|
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Printf</span><span class="p">(</span><span class="s">"Don't know type %T\n"</span><span class="p">,</span> <span class="nx">t</span><span class="p">)</span>
|
||||||
|
<span class="p">}</span>
|
||||||
|
<span class="p">}</span>
|
||||||
|
<span class="nx">whatAmI</span><span class="p">(</span><span class="kc">true</span><span class="p">)</span>
|
||||||
|
<span class="nx">whatAmI</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
|
||||||
|
<span class="nx">whatAmI</span><span class="p">(</span><span class="s">"hey"</span><span class="p">)</span>
|
||||||
<span class="p">}</span>
|
<span class="p">}</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
@ -147,9 +175,12 @@ to express if/else logic. Here we also show how the
|
|||||||
<td class="code">
|
<td class="code">
|
||||||
|
|
||||||
<div class="highlight"><pre><span class="gp">$</span> go run switch.go
|
<div class="highlight"><pre><span class="gp">$</span> go run switch.go
|
||||||
<span class="go">write 2 as two</span>
|
<span class="go">Write 2 as two</span>
|
||||||
<span class="go">it's the weekend</span>
|
<span class="go">It's a weekday</span>
|
||||||
<span class="go">it's before noon</span>
|
<span class="go">It's after noon</span>
|
||||||
|
<span class="go">I'm a bool</span>
|
||||||
|
<span class="go">I'm an int</span>
|
||||||
|
<span class="go">Don't know type string</span>
|
||||||
</pre></div>
|
</pre></div>
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user