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`.
|
||||
i := 2
|
||||
fmt.Print("write ", i, " as ")
|
||||
fmt.Print("Write ", i, " as ")
|
||||
switch i {
|
||||
case 1:
|
||||
fmt.Println("one")
|
||||
@ -25,9 +25,9 @@ func main() {
|
||||
// `default` case in this example as well.
|
||||
switch time.Now().Weekday() {
|
||||
case time.Saturday, time.Sunday:
|
||||
fmt.Println("it's the weekend")
|
||||
fmt.Println("It's the weekend")
|
||||
default:
|
||||
fmt.Println("it's a weekday")
|
||||
fmt.Println("It's a weekday")
|
||||
}
|
||||
|
||||
// `switch` without an expression is an alternate way
|
||||
@ -36,26 +36,26 @@ func main() {
|
||||
t := time.Now()
|
||||
switch {
|
||||
case t.Hour() < 12:
|
||||
fmt.Println("it's before noon")
|
||||
fmt.Println("It's before noon")
|
||||
default:
|
||||
fmt.Println("it's after noon")
|
||||
fmt.Println("It's after noon")
|
||||
}
|
||||
|
||||
// A type `switch` compares types instead of values. You
|
||||
// can use this to discover the the type of an interface
|
||||
// value. In this example, the variable `t` will have the
|
||||
// type corresponding to its clause.
|
||||
whatAmI := func(i interface{}) string {
|
||||
whatAmI := func(i interface{}) {
|
||||
switch t := i.(type) {
|
||||
case bool:
|
||||
return "I am a bool"
|
||||
fmt.Println("I'm a bool")
|
||||
case int:
|
||||
return "I am an int"
|
||||
fmt.Println("I'm an int")
|
||||
default:
|
||||
return fmt.Sprintf("Can't handle type %T", t)
|
||||
fmt.Printf("Don't know type %T\n", t)
|
||||
}
|
||||
}
|
||||
fmt.Println(whatAmI(1))
|
||||
fmt.Println(whatAmI(true))
|
||||
fmt.Println(whatAmI("hey"))
|
||||
whatAmI(true)
|
||||
whatAmI(1)
|
||||
whatAmI("hey")
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
1040d0721b871f78f221a0e9e4a61ea3b0e6de70
|
||||
8b5CajPcHn
|
||||
d255a1fe931fe471b745aeb66830b10216617479
|
||||
kxkBPpY_ue
|
||||
|
@ -1,7 +1,7 @@
|
||||
$ go run switch.go
|
||||
write 2 as two
|
||||
it's the weekend
|
||||
it's before noon
|
||||
I am an int
|
||||
I am a bool
|
||||
Can't handle type string
|
||||
Write 2 as two
|
||||
It's a weekday
|
||||
It's after noon
|
||||
I'm a bool
|
||||
I'm an int
|
||||
Don't know type string
|
||||
|
@ -40,7 +40,7 @@ branches.</p>
|
||||
|
||||
</td>
|
||||
<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>
|
||||
</pre></div>
|
||||
|
||||
@ -80,7 +80,7 @@ branches.</p>
|
||||
<td class="code leading">
|
||||
|
||||
<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">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>
|
||||
@ -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>
|
||||
<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="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>
|
||||
</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>
|
||||
|
||||
</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>
|
||||
<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="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="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>
|
||||
</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>
|
||||
</pre></div>
|
||||
|
||||
@ -147,9 +175,12 @@ to express if/else logic. Here we also show how the
|
||||
<td class="code">
|
||||
|
||||
<div class="highlight"><pre><span class="gp">$</span> go run switch.go
|
||||
<span class="go">write 2 as two</span>
|
||||
<span class="go">it's the weekend</span>
|
||||
<span class="go">it's before noon</span>
|
||||
<span class="go">Write 2 as two</span>
|
||||
<span class="go">It's a weekday</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>
|
||||
|
||||
</td>
|
||||
|
Loading…
x
Reference in New Issue
Block a user