美文网首页
类型 & 变量

类型 & 变量

作者: 小小爱笑 | 来源:发表于2019-04-12 01:07 被阅读0次

    go实现

    类型

    原生基本类型

    int, float , string, [2]int...

    原生的高级类型

    []int , map[string]string ...

    自定义类型

    type User struct {
    Id int
    Name string
    }

    指针类型

    *int , *[]int , *User ....

    接口类型

    代表了一组方法集合

    io.Reader,

    type Provider interface {
    Add()
    }

    变量

    go是静态类型语言,每个变量都有一种已知类型,并且在编译器确定。

    type MyInt int
    
    var i int
    var j MyInt
    

    变量i的静态类型为int,j的静态类型为MyInt,尽管他们的底层类型相同,但他们的静态类型不同,未经转换前无法进行赋值。

    只要某个具体值(非接口)实现了某个接口中的方法,该接口类型的变量就能存储它

    var r io.Reader
    r = os.Stdin
    r = bufio.NewReader(r)
    r = new(bytes.Buffer)
    

    无论r保存了什么值,r的静态类型总是io.Reader。
    接口类型变量存储了一对值,即赋予该变量的具体值,以及该变量的类型描述符。接口内部的对总是 (值, 具体类型) 的形式。
    r 包含的 (值, 类型) 对可以形式化地描述为(tty*os.File

    var empty interface{}
    empty = w
    

    空接口值 e 也将再次包含同样的一对 ( tty, *os.File )

    参考资料

    反射三法则
    Go中接口值的表示

    相关文章

      网友评论

          本文标题:类型 & 变量

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