diff --git a/go1.15/src/cmd/compile/internal/types/type.go b/go1.15/src/cmd/compile/internal/types/type.go index 3b7b31c5d60b4a65ddcf43a667fe888f4682596f..d9b6f472cb7da0c8719f85d40fa4b06cc0215825 100644 --- a/go1.15/src/cmd/compile/internal/types/type.go +++ b/go1.15/src/cmd/compile/internal/types/type.go @@ -117,8 +117,10 @@ var ( // A Type represents a Go type. type Type struct { // Extra contains extra etype-specific fields. + // Extra包含额外的特定于词组的字段。 // As an optimization, those etype-specific structs which contain exactly // one pointer-shaped field are stored as values rather than pointers when possible. + // 作为一种优化,那些特定于etype的结构只包含一个指针形状的字段,尽可能将其存储为值而不是指针。 // // TMAP: *Map // TFORW: *Forward @@ -340,12 +342,12 @@ type Slice struct { Elem *Type // element type } -// A Field represents a field in a struct or a method in an interface or -// associated with a named type. +// A Field represents a field in a struct or a method in an interface or associated with a named type. +// 字段表示接口中的结构或方法中的字段,或与命名类型关联的字段。 type Field struct { flags bitset8 - Embedded uint8 // embedded field + Embedded uint8 // embedded field -> 嵌入字段 Pos src.XPos Sym *Sym @@ -362,9 +364,9 @@ type Field struct { } const ( - fieldIsDDD = 1 << iota // field is ... argument - fieldBroke // broken field definition - fieldNointerface + fieldIsDDD = 1 // field is ... argument + fieldBroke = 2 // broken field definition + fieldNointerface = 4 ) func (f *Field) IsDDD() bool { return f.flags&fieldIsDDD != 0 }