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

上海疫情为何不追责seo营销培训咨询

上海疫情为何不追责,seo营销培训咨询,宁波企业做网站,网站截流做cpaLeetCode 94. 二叉树的中序遍历 这是一道非常基础的模版题,因此就不放出题目描述及输入输出示例和数据范围了。 在用 Golang 重新做这道题的时候,我发现了一个有关 slice 的问题,那就是 slice 类型作为形参时,由于我们已经知道 s…

LeetCode 94. 二叉树的中序遍历

在这里插入图片描述
这是一道非常基础的模版题,因此就不放出题目描述及输入输出示例和数据范围了。

在用 Golang 重新做这道题的时候,我发现了一个有关 slice 的问题,那就是 slice 类型作为形参时,由于我们已经知道 slice 类型是底层数组的一个视图,是引用类型,那么按理说对它在函数中进行的修改在函数返回时,它的传入实参也应该已经得到相应的修改。

但事实却与预期不符,如果直接以 slice 作为形参,那么无法返回正确的中序遍历结果:

// ❌ 无法得到预期的结果
/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func inorderTraverse(node *TreeNode, ans []int) {if node == nil {return}inorderTraverse(node.Left, ans)ans = append(ans, node.Val)inorderTraverse(node.Right, ans)
}func inorderTraversal(root *TreeNode) []int {ans := []int{}inorderTraverse(root, ans)return ans
}

但是当我把形参换位 slice 的指针之后,却能够得到正确的结果,这不禁引发了我的思考:既然 slice 已经是引用类型了,为什么还需要传入指针才能完成对实参的修改呢?

想要回答这个问题,我们需要首先回顾 Golang slice 的底层原理。Golang 的 slice 有三个字段,分别是 unsafe.Pointer,指向底层数组,以及 lencap,分别表示当前 slice 的长度以及容量。

因此如果我们朴素地传入一个 slice,并且在函数中调用了 append,那么很有可能 slice 的 lencap 会在函数中被修改,而由于 Golang 只有传值调用,我们传入的 slice 当中只有 unsafe.Pointer 字段指向底层数组的地址,但 lencap 字段是从函数外部通过调用复制进来的。所以在函数内部,底层数组当中的值确实被修改了,函数内部复制的 slice 的 lencap 也被修改了,但是 lencap 的修改对外部不可见。

综上,如果我们传值调用一个 slice 类型,那么它的 lencap 字段仍然是复制进函数的,函数内部对 lencap 的修改与外部实参无关。

所以如果我们想要使用 ans 这个 slice 保存正确的结果,应该传入 slice 的指针:

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
func inorderTraverse(node *TreeNode, ans *[]int) {if node == nil {return}inorderTraverse(node.Left, ans)*ans = append(*ans, node.Val)inorderTraverse(node.Right, ans)
}func inorderTraversal(root *TreeNode) []int {ans := []int{}inorderTraverse(root, &ans)return ans
}
http://www.dtcms.com/wzjs/399438.html

相关文章:

  • 江门加盟网站建设媒体软文发稿
  • 产品设计网站制作中国万网域名查询
  • 网站建设商务代表故事上海今日头条新闻
  • wordpress加载jquery库百度快速seo
  • 做网站在哪里买空间域名中文搜索引擎网站
  • 成都网站建设seo优化设计答案
  • wordpress 表格样式seo引擎优化工具
  • 网站建设吗排名前十的小说
  • 做淘宝客需要那先网站2022网络热词30个
  • 江阴网站优化公司搜索引擎优化核心
  • 上海seo推广服务广州seo公司品牌
  • 海口建设网站建设百度商品推广平台
  • 上海哪个网站专门做宝宝宴的搜索引擎优化有哪些要点
  • 少儿编程哪个机构比较好需要优化的地方
  • ps做网站ui免费外链代发平台
  • 在哪可以建一个网站网络营销推广策划书
  • wordpress 设置网站目录网页seo
  • 淄博专业网站建设哪家专业外链seo招聘
  • 凉山州住房和城乡建设局网站手机百度网页版入口
  • 做广个公司网站权重如何进行网站的推广
  • 做网站的windowlcd沈阳seo优化排名公司
  • 网站怎么做域名跳转网站广告收费标准
  • 香港个人网站可以做商业的网络推广怎么找客户资源
  • 网站做seo教程百度pc网页版
  • 东莞疫情高峰期是几号seo搜索引擎优化公司
  • 泰安人才招聘网最新招聘2023厦门seo厦门起梦
  • drupal 网站建设微信广告推广如何收费
  • 做网站怎么购买主机百度信息流怎么收费
  • 山西太原新冠疫情最新消息seo实战培训教程
  • 网站推广意识薄弱网址查询域名解析