我在golang的zlib/reader.go文件中找到了很多像r.(flate.Reader)
这样的代码片段。这是什么意思?
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 ...
}
附言
io
和flate
的源代码。io:https://golang.org/src/io/io.go
Flate:https://golang.org/src/compress/flate/inflate.go
最佳答案
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
。关于go - “r.(flate.Reader)”在golang的zlib/reader.go文件中是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33405373/