我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
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
。
问题内容: 以下语句的含义是什么? 我想我已经听说过,和,但从来没有听说过这一点。 问题答案: 背景: 在Python中,有两个内置函数可将对象转换为字符串:vs .。应该是一个易于理解的友好字符串。应该包含有关对象内容的详细信息(有时,它们会返回相同的内容,例如整数)。按照惯例,如果有一个Python表达式可以转换为==的另一个对象,则将返回这样的表达式,例如 如果返回表达式对对象没有意义,则应
问题内容: 我正在阅读http://docs.python.org/2/library/re.html。按此在蟒re.compile(以下简称“R” - [R “模式标志”)是指原始字符串符号: 解决方案是将Python的原始字符串表示法用于正则表达式模式。反斜杠在以’r’开头的字符串文字中不会以任何特殊方式处理。所以r“ \ n”是一个包含’'和’n’的两个字符的字符串,而“ \ n”是一个包含
问题内容: 很多情况下在golang中使用 nil 。例如: 但是我们不能这样使用它: Golang编译器将引发错误。 看起来只能用于struct和interface的指针。如果是这样, 那意味着什么? 而 当我们用它来比较其他对象,他们如何比较,换句话说,如何golang确定一个对象是零 ? 编辑:例如,如果接口为nil,则其类型和值必须同时为nil。 golang如何做到这一点? 问题答案:
在我Linux的主文件夹中,我有几个配置文件,文件扩展名为“rc”: 这些名字中的“rc”是什么意思?
问题内容: 下面的简短bash脚本列出了给定目录及其子目录中的所有文件和目录。脚本中的意思是什么?请给我一些参考。谢谢 问题答案: 这是第一个参数的位置,被视为目录 在bash脚本参数文件传递到脚本(这是脚本的名称),然后,,…要访问所有的人,你既可以使用自己的标签或使用该组的结构之一。对于组构造,有和。(将所有参数视为一个块,并以分隔)
我正在研究jarsigner是如何工作的,以及META-INF文件夹中每个文件的用途。据我所知,清单。MF包含zip/jar中每个文件的列表以及它的摘要。*。SF文件包含清单文件的摘要,以及每个文件的列表以及清单中该文件部分的摘要。最后,是*。DSA/RSA文件包含的数字签名。SF文件。我的问题是,为什么需要SF文件?与对清单文件进行签名并将其存储在中相比,它有什么优势。RSA/DSA文件? 对文