美文网首页
灵活的值和其他类型

灵活的值和其他类型

作者: bocsoft | 来源:发表于2018-11-15 15:28 被阅读0次
package main

import "fmt"

//为map定义类型 Values
type Values map[string][]string

//为int64定义类型 MyInt
type MyInt int64

//为类型Values定义方法Get
func (v Values) Get(key string) string {
    //转换类型
    m := map[string][]string(v)
    return m[key][0]
}

//为类型MyInt定义方法Tripple
func (i MyInt) Tripple() int64 {
    // 需要类型转换
    return int64(i) * 3
}

//定义接口并实现MyInt类型的方法
type MyInterface interface {
    Tripple() int64
}

//定义一个空接口
type Object interface {
}

func main() {
    a := map[string][]string{
        "key1": []string{"1", "2"},
        "key2": []string{"3", "4"},
    }

    //使用为Values定义的Get方法
    b := Values(a)             //转换为自定义类型
    fmt.Println(b.Get("key1")) //1
    fmt.Println(b.Get("key2")) //3

    //使用为MyInt定义的Tripple 方法
    fmt.Println(MyInt(100).Tripple()) //300

    //定义一个空接口
    var obj Object
    //把自定义类型赋值给空接口
    obj = b
    objB, yes := obj.(Values)
    fmt.Println(yes)//true
    fmt.Println(objB.Get("key1"))//1

    objInt,yes1 := obj.(MyInt)
    fmt.Println(yes1)//false
    fmt.Println(objInt)//0

    var m MyInterface
    m = MyInt(9)
    fmt.Println(m.Tripple())//27

   var myint1 MyInt
    myint1 = 102

    var myif MyInterface //该接口实现了MyInt类型中的方法
    myif = myint1
    fmt.Println(myif.Tripple())//306

    switch i := obj.(type){
    case MyInt:
        fmt.Println("x is nil",i)
    case Values:
        fmt.Println("x is Values",i)//x is Values map[key1:[1 2] key2:[3 4]]
    default:
        fmt.Println("don't know the type",i)
    }


}


相关文章

  • 灵活的值和其他类型

  • Java基础类型

    Java基础类型 Java除了8个基础类型和枚举类型外,其他的都是引用类型 整型(默认值0) 浮点型(默认值0.0...

  • js - 11 JS数据类型的转换

    类型转换 js中的取值类型很灵活,可以参考布尔类型,当期望使用一个布尔类型的值的时候可以提供任意类型的值,会根据需...

  • Javascript知识整理——类型

    “类型” 对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值 Javascript...

  • 元组(Tuples)

    元组是一种类型,它多个值组合在一个复合的值里面。元组中的值可以是任何类型,和元组中其他值的类型也不需要一样。 ...

  • 第三章《对象》

    引言 JavaScript的简单类型包括数字、字符串、布尔值、null和undefined值。其他所有的值都是对象...

  • 第一部分 01 类型 值 和 原生函数

    类型 类型是值的内部特征,它定义了值的行为,以使其区别于其他值。 1.2 内置类型 JS有七种内置类型: 空值 n...

  • JS 对象

    javascript 的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对...

  • JavaScript - Object Reference

    JavaScript中除了简单数据类型(包括数字、字符串、布尔值、null值和undefined值)外的其他所有值...

  • JavaScript对象

    JavaScript的简单数据类型包括数字、字符串、布尔值、null值和undefined值。其他所有的值都是对象...

网友评论

      本文标题:灵活的值和其他类型

      本文链接:https://www.haomeiwen.com/subject/jkpyfqtx.html