Golang进阶

【Golang】Go语言那些返回值数量变化的语句?

2017-05-10  本文已影响7人  qishuai
package main

import (
    "fmt"
    "math"
)

func main() {
    var a interface{}
    a = "I am OK"
    a = 23.87

    //第一种情况
    //类型断言
    b,ok := a.(string)
    if ok {
        fmt.Println(b)
    }

    //--------------
    r,err := a.(float64)
    if err {
        fmt.Println(math.Pi * r * r)
    }
    
    //第二种情况
    //map取值
    m := map[string]int{
        "math" : 95,
        "langue" : 90,
        "english" : 89,
    }
    result := m["langue"]
    fmt.Println(result)

    //-------------
    var exit bool
    result, exit = m["english"]
    if exit {
        fmt.Println(result)
    }

    //第三种情况slice/map
    s := []string{"hello", "world", "golang"}
    for k := range s{
        fmt.Print(k)
    }
    //output: 012   为索引值

    var m map[string]int = map[string]int{
      "golang": 1,
      "c++":    2,
      "python": 3,
    }

    for k := range m{
      fmt.Println(k)
    }
    //output:golang 
}

对于类型断言的补充说明:

也就是说,如果这个断言不成功的话,还没有第二个接收者,那么就会panic。 如果断言失败,第二个接收者被抛弃,也就是_,那么程序不会panic

上一篇 下一篇

猜你喜欢

热点阅读