Go基础学习记录 - Go指南 - 类型选择

{app.params.name}}{app.params.name}}{app.params.name}}

环境

go version go1.10.1 darwin/amd64

类型选择

类型选择 是一种按顺序从几个类型断言中选择分支的结构。

类型选择与一般的 switch 语句相似,不过类型选择中的 case 为类型(而非值), 它们针对给定接口值所存储的值的类型进行比较。

switch v := i.(type) {
case T:
    // v 的类型为 T
case S:
    // v 的类型为 S
default:
    // 没有匹配,v 与 i 的类型相同
}

类型选择中的声明与类型断言 i.(T) 的语法相同,只是具体类型 T 被替换成了关键字 type 。此选择语句判断接口值 i 保存的值类型是 T 还是 S 。 在 T 或 S 的情况下,变量 v 会分别按 T 或 S 类型保存 i 拥有的值。 在默认(即没有匹配)的情况下,变量 v 与 i 的接口类型和值相同,具体使用如下

package main

import "fmt"

func do(i interface{}) {
    switch v := i.(type) {
    case int: // int类型
        fmt.Printf("Twice %v is %v\n", v, v*2)
    case string: // string类型
        fmt.Printf("%q is %v bytes long\n", v, len(v))
    default:
        fmt.Printf("I don't know about type %T!\n", v)
    }
}

func main() {
    do(21)
    do("hello")
    do(true)
}

运行后得到的结果如下

Twice 21 is 42
"hello" is 5 bytes long
I don't know about type bool!

 

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/28



版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/28