golang的zlib / reader.go文件中的“ r(flate.Reader)”是什么意思?

【字号: 日期:2024-04-06浏览:39作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决golang的zlib / reader.go文件中的“ r(flate.Reader)”是什么意思??

Go编程语言规范

类型断言

对于具有接口类型和类型T的表达式x,主要表达式

x.(T)

断言x不为nil,并且x中存储的值的类型为T。符号x。(T)称为类型断言。

在特殊形式的赋值或初始化中使用的类型断言

v, ok = x.(T)v, ok := x.(T)var v, ok = x.(T)

产生另一个无类型的布尔值。如果断言成立,则ok的值为true。否则为false,且v的值为T类型的零值。在这种情况下,不会发生运行时恐慌。C

r.(flate.Reader)是类型断言。例如,

func (z *reader) Reset(r io.Reader, dict []byte) error { if fr, ok := r.(flate.Reader); ok {z.r = fr } else {z.r = bufio.NewReader(r) } // more code omitted ...}

r是类型io.Reader的interface。fr, ok :=r.(flate.Reader)检查r是否包含io.Reader类型为的flate.Reader。

解决方法

我r.(flate.Reader)在golang的zlib / reader.go文件中找到了很多代码片段。这是什么意思?https://golang.org/src/compress/zlib/reader.go

func (z *reader) Reset(r io.Reader,dict []byte) error { if fr,ok := r.(flate.Reader); ok {z.r = fr } else {z.r = bufio.NewReader(r) } // more code omitted ...}

的PS源代码io和flate。io:https://golang.org/src/io/io.go平板:https://golang.org/src/compress/flate/inflate.go

相关文章: