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

作业3 主题资源网站建设wordpress 开源

作业3 主题资源网站建设,wordpress 开源,美的集团网站建设方案书,海珠区住房和水务建设局网站切片的底层数据结构是数组#xff0c;所以#xff0c;切片是基于数组的上层封装#xff0c;使用数组的场景#xff0c;也完全可以使用切片。 类型比较 我看到 go 1.17 有对切片和数组转换的优化#xff0c;禁不住纳闷#xff0c;有什么场景是必须数组来完成的呢#x…切片的底层数据结构是数组所以切片是基于数组的上层封装使用数组的场景也完全可以使用切片。 类型比较 我看到 go 1.17 有对切片和数组转换的优化禁不住纳闷有什么场景是必须数组来完成的呢我特意去查了一下数组和切片的核心差异刨去有的没的核心就 2 点 数组是可比较的切片是不可比较的验证的方式也非常简单。声明一个 map 类型如果 key 的类型是切片会报如下的编译错误。如果是数组类型可以正常编译。数组赋值是值拷贝切片赋值是引用拷贝切片类型在值拷贝前后底层共用的还是同一个数组而数组的值拷贝就是值拷贝。 在查看的过程中我也有发现数组指针的用法除了可以通过数组本身来操作数组还可以通过数组指针来操作。而这种使用手法是切片不具备的。 下面的代码通过数组指针 (b) 可以像直接使用 b 一样访问数组的元素而通过使用指针赋值的方式也可以让两个变量共用同一个数组。 func main() {var b [3]int{11, 12, 13} //fmt.Println((b)[0])fmt.Println(b[0]) }下面数组的赋值过程 a 和 b 是值拷贝完全独立的两份数据b 数组修改第一个元素并不会影响到数组 a。而 c 和 a 是数组指针类型的值拷贝共享同一份数组数据c 数组修改第一个元素也就修改了 a 指向的数组。 func main() {var a [3]int{11, 12, 13} //b : ab[0] 10fmt.Println(a[0])fmt.Println(b[0])c : ac[0] 10fmt.Println(a[0])fmt.Println(c[0]) }类型转换 数组和切片的转换说实话在业务开发的过程中我基本上没有用到这种转换场景。因为切片的底层是数组数组可以直接转换为切片类型转换后切片和数组共享同一份空间。 func main() {var a [3]int{11, 12, 13} b : a[:len(a)]fmt.Printf(%T,%T, b, a) }仔细想想切片在 go 中的结构为 SliceHeader 除了数组 Data 部分还包含了 Len 和 Cap 两个属性。所以go 数组转切片的过程也是封装这个 SliceHeader 的过程。 type SliceHeader struct {Data uintptrLen intCap int }但在 1.17 之前切片是不能直接转换为数组的要想转换为数组就需要通过 unsafe 包来实现。不过切片要转换为数组相比数组转换为切片要简单很多。 原理上就是获取切片底层数组的第一个元素的指针转换为数组的指针。 func main() {var a []int{11, 12, 13} //b : (*[3]int)(unsafe.Pointer(a[0]))fmt.Println(b) }现在 go 1.17 默认也支持了这个转换转换的方式也很好理解转换为数组类型的指针。因为是指针所以转换后的数组 b 和 a 仍然还是共用同一份数据。 为什么默认转换使用的类型是数组指针 (*[3]int)而非 ([3]int) 呢我理解如果是值类型的话还需要底层数据的拷贝语义上也没有指针类型好理解。 func main() {var a []int{11, 12, 13} //b : (*[3]int)(a)fmt.Println(b) }应用 结合以往的工作比较适合使用数组替代切片的场景大概就是控制并发的顺序。 我们有一组数组 reqs要请求某一个接口。然后需要按照请求的顺序返回请求的结果。我们使用 go 协程并发请求接口然后基于请求的索引将接口返回的结果存储到对应索引数组的位置。 因为数组的个数是固定的所以这种场景还是比较少的 func main() {var reqs [3]interface{} [...]interface{}{1, 2, 3}var res [3]interface{}for i: range reqs {go func(index int) {res[index] reqs[index]}(i)}time.Sleep(time.Second)fmt.Println(res) }
http://www.hkea.cn/news/14298350/

相关文章:

  • 怎么做刷业网站重庆点优建设网站公司
  • 网站建设中主页指的是网站建设方案策划
  • 营销网站的宣传、推广与运作服务器主机 网站
  • 金坛网站建设价格关于学校网站建设的需求分析
  • 做戒烟网站素材宁波网站建设价格
  • 找摄影作品的网站网站建设团队分工
  • 上海有多少个网站科技公司个人网站数据库怎么做
  • 想做网站建设网站制作软件是什么意思
  • 富锦建设局网站ie浏览器打开建设银行网站
  • xx单位网站建设方案网站备案地区名
  • 好发信息网站建设网站建设标准依据
  • 公司网站制作源码wordpress修改主题插件
  • 贵阳做网站公司排名自己做网站销售
  • 手机网站建设注册塔山双喜域名的网站建设方案书
  • 萧山区住房和城乡建设局网站山东省住房和城乡建设厅定额站子网站
  • 政务服务网站建设文档广东传染病最新消息
  • 做网站需要用到ps吗南京企业网站开发费用申请
  • 途牛网电子商务网站建设分析国家电网建设部网站官网
  • 建网站过程什么是网站规划
  • 哈尔滨 做网站公司哪家好购物网站的详细设计
  • 怎样为网站做推广安卓手机app下载软件
  • 深圳网站设计比较好的公司有哪些ps做 网站标准尺寸
  • seo网站优化方案网站开发工作程序怎么写
  • 自助网站能在百度上搜到么网页设计论文引言
  • 做淘宝主要看哪些网站互联网广告公司排名前十
  • 宏重钢结构东莞网站建设做的网站为什么图片看不了
  • 网站建设动画教程传奇霸主网页版
  • 免费做图网站有哪些企业网服务器如何搭建
  • 定制网站建设广告企业建设电商网站
  • 珠海公司网站建设ppt免费模板在哪下载