本系列是阅读 “The Go Programming Language” 理解和记录。
Interface value 的赋值
从概念上来讲,interface value 有两部分组成:type 部分是一个 concrete type,vlaue 部分是这个 concrete type 对应的 instance,它们分别称之为 interface value 的 dynamic type 和 dynamic value。
由于 Go 是静态类型的语言,type 是在编译阶段已经定义好的,而 interface 存储的值是动态的,在上面这个概念模型中,type 部分更准确叫法是 type descriptors,主要是提供 concrete type 的相关信息,包括 method、name 等。
下面这几个语句:1
2
3
4var w io.Writer
w = os.Stdout
w = new(bytes.Buffer)
w = nil
变量 w
依次存储了三种不同的值,在此我们依次来看看每种不同的值的确切含义。