星号(* struct)表示法在golang中是什么意思

用户名
// NewReaderSize returns a new Reader whose buffer has at least the specified
43  // size. If the argument io.Reader is already a Reader with large enough
44  // size, it returns the underlying Reader.
45  func NewReaderSize(rd io.Reader, size int) *Reader {
46      // Is it already a Reader?
47      b, ok := rd.(*Reader)
48      if ok && len(b.buf) >= size {
49          return b
50      }
51      if size < minReadBufferSize {
52          size = minReadBufferSize
53      }
54      r := new(Reader)
55      r.reset(make([]byte, size), rd)
56      return r
57  }

当我使用os.Open打开文件时

dictFile, err := os.Open(file)

我将传递dicFile到

reader := bufio.NewReader(dictFile)

我发现底层代码正在使用func NewReaderSize,但是我不明白的是rd.(*Reader)Reader是package中包含的结构类型bufio我看到的后跟一个结构的星号是从指针获得值的Reader,但是它不是指针,因此没有任何意义。再者,它使用点运算符rd.(*Reader),我完全感到困惑。第47行中的这种用法是什么意思?这是一种什么样的符号?

Arjan

newReaderSize使用读取器(io.Reader接口)并返回指向的指针Readerstruct在中定义bufio)。

这称为类型断言:

b, ok := rd.(*Reader)

从golang规范:

对于接口类型为T且类型为T的表达式x,主表达式x。(T)断言x不是nil,并且存储在x中的值是T类型。符号x。(T)称为类型断言。

这行代码将那个读者带入并断言它是一种类型*Reader,如果成功,并且其Reader缓冲区足够大,可以立即返回(因为它已经是我们想要的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

A *算法中的星号是什么意思?

来自分类Dev

星号转储输出中的星号“ *”是什么意思?

来自分类Dev

星号在((CanonEOS *)ptp)-> SwitchLiveView(true)中是什么意思

来自分类Dev

在保护规则中,双星号是什么意思?

来自分类Dev

**(双星号)在JavaScript中是什么意思?

来自分类Dev

**(双星号)在JavaScript中是什么意思?

来自分类Dev

星号在rspec输出中是什么意思

来自分类Dev

Lisp文档模板中的星号是什么意思?

来自分类Dev

星号在((CanonEOS *)ptp)-> SwitchLiveView(true)中是什么意思

来自分类Dev

星号在scanf的参数列表中是什么意思

来自分类Dev

星号在rspec输出中是什么意思

来自分类Dev

.sha文件中的星号是什么意思?

来自分类Dev

lsof输出中的星号(*)是什么意思?

来自分类Dev

空括号中的星号是什么意思?

来自分类Dev

游侠中的星号或星号表示什么?

来自分类Dev

CSS背景颜色前的星号是什么意思?

来自分类Dev

常数前面的星号是什么意思?

来自分类Dev

线程ID上的星号是什么意思?

来自分类Dev

CSS-上课前的星号是什么意思?

来自分类Dev

星号(*)在Linux for循环中是什么意思

来自分类Dev

在输入的属性“模式”上使用星号是什么意思?

来自分类Dev

模板类型后的星号“*”是什么意思?

来自分类Dev

scanf格式说明符中的星号是什么意思?

来自分类Dev

SVN历史记录中带有星号(*)的粗体字是什么意思?

来自分类Dev

在opengl中,变量名后的星号(*)是什么意思?

来自分类Dev

:: *(作用域运算符后的星号)在C ++模板中是什么意思?

来自分类Dev

在C ++中,在对象创建括号之前的星号是什么意思?

来自分类Dev

在opengl中,变量名后面的星号(*)是什么意思?

来自分类Dev

星号,反斜杠,冒号和(* \:2)中的两个是什么意思?

Related 相关文章

  1. 1

    A *算法中的星号是什么意思?

  2. 2

    星号转储输出中的星号“ *”是什么意思?

  3. 3

    星号在((CanonEOS *)ptp)-> SwitchLiveView(true)中是什么意思

  4. 4

    在保护规则中,双星号是什么意思?

  5. 5

    **(双星号)在JavaScript中是什么意思?

  6. 6

    **(双星号)在JavaScript中是什么意思?

  7. 7

    星号在rspec输出中是什么意思

  8. 8

    Lisp文档模板中的星号是什么意思?

  9. 9

    星号在((CanonEOS *)ptp)-> SwitchLiveView(true)中是什么意思

  10. 10

    星号在scanf的参数列表中是什么意思

  11. 11

    星号在rspec输出中是什么意思

  12. 12

    .sha文件中的星号是什么意思?

  13. 13

    lsof输出中的星号(*)是什么意思?

  14. 14

    空括号中的星号是什么意思?

  15. 15

    游侠中的星号或星号表示什么?

  16. 16

    CSS背景颜色前的星号是什么意思?

  17. 17

    常数前面的星号是什么意思?

  18. 18

    线程ID上的星号是什么意思?

  19. 19

    CSS-上课前的星号是什么意思?

  20. 20

    星号(*)在Linux for循环中是什么意思

  21. 21

    在输入的属性“模式”上使用星号是什么意思?

  22. 22

    模板类型后的星号“*”是什么意思?

  23. 23

    scanf格式说明符中的星号是什么意思?

  24. 24

    SVN历史记录中带有星号(*)的粗体字是什么意思?

  25. 25

    在opengl中,变量名后的星号(*)是什么意思?

  26. 26

    :: *(作用域运算符后的星号)在C ++模板中是什么意思?

  27. 27

    在C ++中,在对象创建括号之前的星号是什么意思?

  28. 28

    在opengl中,变量名后面的星号(*)是什么意思?

  29. 29

    星号,反斜杠,冒号和(* \:2)中的两个是什么意思?

热门标签

归档