前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >21.Go语言-静态类型与动态类型

21.Go语言-静态类型与动态类型

原创
作者头像
面向加薪学习
发布2022-09-04 11:23:40
2620
发布2022-09-04 11:23:40
举报
文章被收录于专栏:面向加薪学习面向加薪学习

第 21 章 静态类型与动态类型

21.1 静态类型(static type)

静态类型就是变量声明时候的类型。例如:

代码语言:go
复制
// int 是静态类型
var number int
// string 也是静态类型
var name string

21.2 动态类型(concrete type)

动态类型是程序运行时系统才能看见的类型。例如:

代码语言:go
复制
// in 的静态类型为 interface{}
var in interface{}
// in 的静态类型为 interface{} 动态类型为 int
in = 100
// in 的静态类型为 interface{} 动态类型为 string
in = "《从0到Go语言微服务架构师训练营》"

通过上面的例子,可以看到我们定义了一个空接口 in ,它的静态类型永远是 interface{} ,但它可以接受任何类型,接受整型数据时,它的动态类型就为 int ;接受字符串型数据时,它的动态类型就变为 string

21.3 接口组成

每个接口变量实际上都是由一 pair 对组成,其中记录了实际变量的值和类型。例如:

代码语言:go
复制
var number int = 100

这里声明了一个类型为 int 的变量,变量名叫 number 值为 100 。知道了接口的组成,我们也可以使用下面的方式定义一个变量:

代码语言:go
复制
package main

import "fmt"

func main() {
    number := (int)(100)
    // 或者写成 number := (interface{})(100)
    fmt.Printf("number type: %T, data: %v", number, number)
}

运行上面的程序输出如下:

代码语言:shell
复制
number type: int, data: 100

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 21 章 静态类型与动态类型
    • 21.1 静态类型(static type)
      • 21.2 动态类型(concrete type)
        • 21.3 接口组成
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档