Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

动态大小类型

大多数类型在编译时具有固定的大小,并实现了 Sized 特型。大小仅在运行时已知的类型被称为 动态大小类型 (DST) ,或者非正式地称为不定长类型。 切片特型对象strDST 的示例。

这类类型只能在某些情况下使用:

  • 指向 DST指针类型 是定长的,但其大小是定长类型指针的两倍
    • 指向切片和 str 的指针还存储了元素的数量。
    • 指向特型对象的指针还存储了一个指向 vtable 的指针。
  • DST 可以作为具有特殊 ?Sized 边界的泛型类型参数的类型参数提供。当相应的关联类型声明具有 ?Sized 边界时,它们也可以用于关联类型定义。默认情况下,任何类型参数或关联类型都具有 Sized 边界,除非使用 ?Sized 将其放宽。
  • 可以为 DST 实现特型。与泛型类型参数不同,在特型定义中 Self: ?Sized 是默认的。
  • 结构体可以将 DST 作为其最后一个字段;这使得结构体本身也成为一个 DST

注意

变量、 函数参数、 常量 项 和 静态 项 必须是 Sized 的。