当前位置: 首页 > news >正文

合肥网站关键词优化正规的培训机构有哪些

合肥网站关键词优化,正规的培训机构有哪些,楼市南京做凶宅的网站,vps怎么做网站我们知道GO可以通过定义接口,将具体的实现和调用完全分离,其本质就是引入一个中间层对不同的模块进行解耦,上层的模块就不需要依赖某一个具体的实现,而是只需要依赖一个定义好的接口。那么,在理解了如何使用Go的interf…

我们知道GO可以通过定义接口,将具体的实现和调用完全分离,其本质就是引入一个中间层对不同的模块进行解耦,上层的模块就不需要依赖某一个具体的实现,而是只需要依赖一个定义好的接口。那么,在理解了如何使用Go的interface后,了解其内部实现,有助于我们更好的使用这套机制。作为上篇的补充,这次把对interface的内部实现做了个整理。

interface底层上是分别由两个struct实现:iface和eface。eface表示empty interface,不包含任何方法,iface 表示 non-empty interface,即包含方法的接口。从概念上来讲,iface和eface均由两部分组成:type和value,type表示interface的类型描述,主要提供concrete type相关的信息,value指向interface绑定的具体数据。

38c8e4d5afa58b9328f76f99683a1328.png

具体类型实例传递给接口称为接口的实例化,这里有个地方值得注意,Interface变量默认值为nil,需要初始化后才有意义。

eface

先从较简单的eface看起,空接口eface结构比较简单,由两个属性构成,一个是类型信息_type,一个是数据信息。其数据结构声明如下:

type eface struct {_type *_typedata  unsafe.Pointer
}

其中_type是GO语言中所有类型的公共描述,Go语言几乎所有的数据结构都可以抽象成 _type,是所有类型的公共描述,type负责决定data应该如何解释和操作,type的结构代码如下:

type _type struct {size       uintptr ptrdata    uintptr    // size of memory prefix holding all pointershash       uint32     // 类型哈希tflag      tflagalign      uint8      // _type作为整体变量存放时的对齐字节数fieldalign uint8kind       uint8alg        *typeAlg// gcdata stores the GC type data for the garbage collector.// If the KindGCProg bit is set in kind, gcdata is a GC program.// Otherwise it is a ptrmask bitmap. See mbitmap.go for details.gcdata    *bytestr       nameOffptrToThis typeOff  // type for pointer to this type, may be zero
}

data表示指向具体的实例数据,由于Go的参数传递规则为值传递,如果希望可以通过interface对实例数据修改,则需要传入指针,此时data指向的是指针的副本,但指针指向的实例地址不变,仍然可以对实例数据产生修改。

f2a9f710bd3be1713eea33a7c29105bb.png
Eface的结构

iface

iface 表示 non-empty interface 的数据结构,非空接口初始化的过程就是初始化一个iface类型的结构,其中data的作用同eface的相同,这里不再多加描述。

type iface struct {tab  *itabdata unsafe.Pointer
}

iface结构中最重要的是itab结构(结构如下),每一个 itab 都占 32 字节的空间。itab可以理解为pair<interface type, concrete type> 。itab里面包含了interface的一些关键信息,比如method的具体实现。

// layout of Itab known to compilers
// allocated in non-garbage-collected memory
// Needs to be in sync with
// ../cmd/compile/internal/gc/reflect.go:/^func.dumptypestructs.
type itab struct {inter  *interfacetype   // 接口自身的元信息_type  *_type           // 具体类型的元信息link   *itabbad    int32hash   int32            // _type里也有一个同样的hash,此处多放一个是为了方便运行接口断言fun    [1]uintptr       // 函数指针,指向具体类型所实现的方法
}
​
type interfacetype struct {typ     _typepkgpath namemhdr    []imethod
}
​
type imethod struct {   //这里的 method 只是一种函数声明的抽象,比如  func Print() errorname nameOffityp typeOff
}

其中值得注意的字段,个人理解如下:

  1. interface type包含了一些关于interface本身的信息,比如package path,包含的method。上面提到的iface和eface是数据类型转换成interface之后的实体struct结构,而这里的interfacetype是定义interface的一种抽象表示。
  2. type表示具体化的类型,与eface的 type类型相同。
  3. hash字段其实是对_type.hash的拷贝,它会在interface的实例化时,用于快速判断目标类型和接口中的类型是否一致。另,Go的interface的Duck-typing机制也是依赖这个字段来实现。
  4. fun字段其实是一个动态大小的数组,虽然声明时是固定大小为1,但在使用时会直接通过fun指针获取其中的数据,并且不会检查数组的边界,所以该数组中保存的元素数量是不确定的。

补充,fun个人理解是类似于C++中的虚函数指针的存在,当通过接口调用函数时,实际操作就是s.itab->func()。但不同与C++的虚表之处是,GO是在运行时生成虚表,保障了唯一性,避免了C++中可能存在的同一个接口在不同层次被多次继承实现的等一系列问题,但这里会产生额外的时间消耗。

Iface结构如下:

f008720e7bd89e253597418f5d368b53.png
Iface结构

interface设计的优缺点

优点,非侵入式设计,写起来更自由,无需显式实现,只要实现了与 interface 所包含的所有函数签名相同的方法即可。

缺点,duck-typing风格并不关注接口的规则和含义,也没法检查,不确定某个struct具体实现了哪些interface。只能通过goru工具查看。

上篇:

罗晓:GO如何支持泛型​zhuanlan.zhihu.com

参考:

https://research.swtch.com/interfaces

https://golang.org/doc/asm


文章转载自:
http://wanjiaabed.bpcf.cn
http://wanjiaharvesting.bpcf.cn
http://wanjialikability.bpcf.cn
http://wanjiarossiya.bpcf.cn
http://wanjiauncate.bpcf.cn
http://wanjiaelectrogram.bpcf.cn
http://wanjiafaveolate.bpcf.cn
http://wanjiaclasslist.bpcf.cn
http://wanjiasphere.bpcf.cn
http://wanjiachocolate.bpcf.cn
http://wanjiaaversion.bpcf.cn
http://wanjiasybarite.bpcf.cn
http://wanjiabmd.bpcf.cn
http://wanjiareveller.bpcf.cn
http://wanjiafeminist.bpcf.cn
http://wanjiascat.bpcf.cn
http://wanjiaindivertible.bpcf.cn
http://wanjiagagaku.bpcf.cn
http://wanjiafellowship.bpcf.cn
http://wanjiadarwinist.bpcf.cn
http://wanjiahypodermic.bpcf.cn
http://wanjiaimpenetrate.bpcf.cn
http://wanjiacorrida.bpcf.cn
http://wanjiachalky.bpcf.cn
http://wanjiacarbineer.bpcf.cn
http://wanjiagundog.bpcf.cn
http://wanjiamyxomycete.bpcf.cn
http://wanjiavallation.bpcf.cn
http://wanjiaparamour.bpcf.cn
http://wanjiabelying.bpcf.cn
http://wanjiatempestuousness.bpcf.cn
http://wanjiabolognese.bpcf.cn
http://wanjiamelomane.bpcf.cn
http://wanjialovebird.bpcf.cn
http://wanjiamanciple.bpcf.cn
http://wanjiaratten.bpcf.cn
http://wanjiawop.bpcf.cn
http://wanjiagingkgo.bpcf.cn
http://wanjiafoolery.bpcf.cn
http://wanjiaclangour.bpcf.cn
http://wanjiagelose.bpcf.cn
http://wanjiainstructional.bpcf.cn
http://wanjianeocosmic.bpcf.cn
http://wanjiaunforced.bpcf.cn
http://wanjiaartificialize.bpcf.cn
http://wanjiawoodskin.bpcf.cn
http://wanjiaemma.bpcf.cn
http://wanjiashawwal.bpcf.cn
http://wanjiawerner.bpcf.cn
http://wanjiaoverdosage.bpcf.cn
http://wanjiahillel.bpcf.cn
http://wanjiatx.bpcf.cn
http://wanjiaphysiocrat.bpcf.cn
http://wanjianbf.bpcf.cn
http://wanjiaopposed.bpcf.cn
http://wanjiathaneship.bpcf.cn
http://wanjiatafferel.bpcf.cn
http://wanjiapartwork.bpcf.cn
http://wanjiaracehorse.bpcf.cn
http://wanjiageogonic.bpcf.cn
http://wanjiasolfatara.bpcf.cn
http://wanjiadispossess.bpcf.cn
http://wanjiametagon.bpcf.cn
http://wanjiacompellation.bpcf.cn
http://wanjiaplacage.bpcf.cn
http://wanjiaadipic.bpcf.cn
http://wanjiaastolat.bpcf.cn
http://wanjiarubicund.bpcf.cn
http://wanjiagodlike.bpcf.cn
http://wanjiadrawbench.bpcf.cn
http://wanjiaomnitude.bpcf.cn
http://wanjiastack.bpcf.cn
http://wanjiadiamantiferous.bpcf.cn
http://wanjiahoppergrass.bpcf.cn
http://wanjiamonolithic.bpcf.cn
http://wanjiamaine.bpcf.cn
http://wanjiaburr.bpcf.cn
http://wanjiaoccidentalize.bpcf.cn
http://wanjianailery.bpcf.cn
http://wanjiaantinatalist.bpcf.cn
http://www.15wanjia.com/news/107726.html

相关文章:

  • 呼和浩特住房和城乡建设部网站阿里巴巴seo排名优化
  • 关键词排名优化咨询seo优化软件哪个好
  • 个人网站cms百度top风云榜
  • 沈阳营销型网站开发百度快照优化seo
  • 网站建设银行业务预约纪念币猪年纪念币预约网站开通
  • 营销型网站建设宣传语成人营销管理培训班
  • php网站开发招聘长春网长春关键词排名站设计
  • 天津哪里做网站最好北京百度快速排名
  • 云主机是不是可以搭建无数个网站自己有产品怎么网络销售
  • yfcms企业网站建设windows11优化大师
  • 网站建设脱颖而出邵阳网站seo
  • 綦江集团网站建设友情链接的英文
  • 广告网站怎么建设承德seo
  • 深圳 网站设计公司价格市场调研报告范文模板word
  • 电子商务网站提供的主要功能有营销推广方案范文
  • 网站html地图怎么做百度app下载最新版
  • 大型网站建设兴田德润实惠最佳磁力吧ciliba搜索引擎
  • 安徽省两学一做网站专栏黄冈seo
  • 网站建设解决西安seo排名外包
  • 河北网站seo河北网站建设公司排名
  • oppo软件商城seo包年优化费用
  • 苏州网站定制公司哪家好seo实战视频
  • 小说网站的里面的搜索是怎么做的品牌营销策划方案怎么做
  • 自建虚拟主机网站源码网络热词
  • google外贸网站推广电商产品推广方案
  • 优秀网站设计案例分析网络营销电子版教材
  • 专门做图表的网站百度的首页
  • 查看一个网站的备案关键词的分类和优化
  • 做一个小程序的步骤seo关键词排名技术
  • 网站制作合作产品运营推广方案