golang中类型原型slice struct array string

无拘无束的猪 · · 491 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

type.go

type Array struct {
    len  int64
    elem Type
}
func NewArray(elem Type, len int64) *Array { return &Array{len, elem} }
func (a *Array) Len() int64 { return a.len }
func (a *Array) Elem() Type { return a.elem }

type Map struct {
    key, elem Type
}
func NewMap(key, elem Type) *Map {
    return &Map{key, elem}
}
func (m *Map) Key() Type { return m.key }
func (m *Map) Elem() Type { return m.elem }

src/reflect/value.go

type stringHeader struct {
    Data unsafe.Pointer
    Len  int
}
type sliceHeader struct {
    Data unsafe.Pointer  //uintptr
    Len  int
    Cap  int
}
type stringHeader struct {
    Data unsafe.Pointer  //uintptr
    Len  int
}

type emptyInterface struct {
    typ  *rtype
    word unsafe.Pointer
}

// nonEmptyInterface is the header for an interface value with methods.
type nonEmptyInterface struct {
    // see ../runtime/iface.go:/Itab
    itab *struct {
        ityp *rtype // static interface type
        typ  *rtype // dynamic concrete type
        hash uint32 // copy of typ.hash
        _    [4]byte
        fun  [100000]unsafe.Pointer // method table
    }
    word unsafe.Pointer
}

// A runtimeSelect is a single case passed to rselect.
// This must match ../runtime/select.go:/runtimeSelect
type runtimeSelect struct {
    dir SelectDir      // SelectSend, SelectRecv or SelectDefault
    typ *rtype         // channel type
    ch  unsafe.Pointer // channel
    val unsafe.Pointer // ptr to data (SendDir) or ptr to receive buffer (RecvDir)
}

type SelectCase struct {
    Dir  SelectDir // direction of case
    Chan Value     // channel to use (for send or receive)
    Send Value     // value to send (for send)
}

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:无拘无束的猪

查看原文:golang中类型原型slice struct array string

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

491 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传