iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Go 中追加的奇怪行为
  • 885
分享到

Go 中追加的奇怪行为

2024-02-02 14:02:35 885人浏览 安东尼
摘要

问题内容 我正在尝试使用 Go 解决 LeetCode 上的子集问题。我想出了以下解决方案: func subsets(nums []int) [][]int { sol := make([][]in

问题内容

我正在尝试使用 Go 解决 LeetCode 上的子集问题。我想出了以下解决方案:

func subsets(nums []int) [][]int {
    sol := make([][]int,0)
    temp:= make([]int,0)

    var backtrack func(idx int)
    backtrack = func(idx int) {
        sol = append(sol, temp)
        fmt.Println(temp, append([]int{},temp...))

        if idx == len(nums) {
            return
        }

        for i:= idx; i

但是,这个解决方案是不正确的。我注意到我需要使用append(sol,append([]int{},temp...))而不是仅仅sol=append(sol,temp)。

即使 fmt.Println(temp,append([]int{}, temp...)) 语句为 temp 和append([]int{}, temp...) 生成相同的输出,使用append([]int{}, temp...) 的更正版本实际上有效。有人可以解释在这种情况下 temp 和 append([]int{}, temp...) 之间的区别吗?为什么修正后的版本可以工作,而初始版本却不能?

预计 tempappend([]int{},temp...) 相同


正确答案


sol =append(sol, temp) 的问题是您将切片 temp 添加到 sol 中,而不是切片“内部”的项目。正如 Slice 内部博客文章 中所述,切片“只是”指向数组的指针、长度和容量。

因此,在您的情况下,由于 temp 在每次迭代中重用,因此 temp 切片下的数组内容将被覆盖,并且您之前添加到 sol 的切片内的值也将被覆盖已修改(因为切片下的数组已修改)。这就是为什么您最终得到错误结果的原因,即使您的 fmt.Println 语句显示在附加之前, temp 具有正确的值。

append([]int{}, temp...) 创建一个新切片时,新切片内的值不可能发生变化,因为它没有被重用。

以上就是Go 中追加的奇怪行为的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Go 中追加的奇怪行为

本文链接: https://www.lsjlt.com/news/560144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go 中追加的奇怪行为
    问题内容 我正在尝试使用 Go 解决 LeetCode 上的子集问题。我想出了以下解决方案: func subsets(nums []int) [][]int { sol := make([][]in...
    99+
    2024-02-02
  • 下载我的模块时出现奇怪的行为
    php小编香蕉有关下载模块时出现奇怪行为的问题,可能是由于多种原因导致的。有时候,下载的模块可能损坏或不完整,这可能会导致奇怪的行为。另外,也有可能是由于服务器或网络连接问题导致的下载...
    99+
    2024-02-10
  • 奇异的行为:在Go中解组为结构
    怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面编程网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《奇异的行为:在Go中解组为结构》,...
    99+
    2024-04-04
  • Go 奇怪语法背后的技术原因
    有志者,事竟成!如果你在学习Golang,那么本文《Go 奇怪语法背后的技术原因》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~问题内容...
    99+
    2024-04-05
  • TypeScript中有哪些奇怪的符号
    这篇文章主要讲解了“TypeScript中有哪些奇怪的符号”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TypeScript中有哪些奇怪的符号”吧!一、! 非空断言操作符在上下文中当类型检查...
    99+
    2023-06-16
  • 关于JavaScript中parseInt()的一个怪异行为解决
    目录1. parseInt() 中的一个怪异行为2.解决 parseInt() 该怪异行为3. 总结parseInt() 是一个内置的 JavaScript 函数,它可以将数字字符串...
    99+
    2022-12-08
    js中的parseint js parseint js parseInt()
  • For-else:Python中一个奇怪但有用的特性
    导语无论使用哪种编程语言,我们都会编写“if-else”语句,但是“for-else”呢?对于许多语言来说,例如 C、C++ 和 Java,在一个循环后使用“else”是完全错误的。然而 Python 作为一门优雅的语言,拥有这个“奇怪但有...
    99+
    2023-05-14
    Python For-else
  • JavaScript中一些奇怪的问题如何解决
    这篇文章主要介绍“JavaScript中一些奇怪的问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中一些奇怪的问题如何解决”文章能帮助大家解决问题。1、变量提升问题变量...
    99+
    2023-07-05
  • 分析MySQL中FTWRL一个奇怪的堵塞现象
    本篇内容介绍了“分析MySQL中FTWRL一个奇怪的堵塞现象”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • JavaScript中一些奇怪的问题及解决分享
    目录1、变量提升问题2、this 指向问题3、== 和 === 比较问题4、循环中的异步问题5、引用类型比较问题6、变量命名问题7、数据类型转换问题8、...
    99+
    2023-03-06
    JavaScript奇怪问题 JavaScript 问题
  • 奇怪的AndroidStudio报错--checkDebugAarMetadata--修改SDK版本为33成功修复
    使用Android Studio创建程序时报错 checkDebugAarMetadata: 6 issues were found when checking AAR metadata: 1. ...
    99+
    2023-09-15
    android android studio ide
  • CSS中有哪些高频出现的奇怪按钮样式
    本篇内容介绍了“CSS中有哪些高频出现的奇怪按钮样式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先让我们...
    99+
    2024-04-02
  • Go 和 Bash 一起面试?这种奇怪的组合能否通过数组问题?
    Go 和 Bash 是两种完全不同的编程语言,前者是一种编译型语言,后者则是一种解释型语言。在面试中,我们往往会被要求解决一些数组问题,这时候,我们会不会想到结合使用这两种语言呢? 在本篇文章中,我们将会探讨在面试中,使用 Go 和 Ba...
    99+
    2023-06-22
    bash 面试 数组
  • 在 Golang 中的文件之间追加
    大家好,我们又见面了啊~本文《在 Golang 中的文件之间追加》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步...
    99+
    2024-04-04
  • 如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题
    今天就跟大家聊聊有关如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 ...
    99+
    2024-04-02
  • 如何解决在SQL脚本中的注释引起的奇怪问题
    如何解决在SQL脚本中的注释引起的奇怪问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在数据库安装包中,我们通过osql.exe这个工具...
    99+
    2024-04-02
  • Go slice切片make生成append追加copy复制的方法
    这篇文章主要介绍“Go slice切片make生成append追加copy复制的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go slice切片make生成append追加...
    99+
    2023-07-02
  • 框架集标签的调试技巧:解决HTML怪异行为
    确保正确的嵌套 框架集标签必须正确嵌套。一个 元素可以包含多个 元素,但 元素不能包含其他 元素。 <frameset> <frame src="left.html"/> <frame src...
    99+
    2024-03-05
    框架集标签 | HTML | 调试
  • Linux文件执行中的锁定怪现象分析
    这篇文章将为大家详细讲解有关Linux文件执行中的锁定怪现象分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。linux下,一个可执行文件exe1正在执行中,rm &ndash;f可以将其删除,m...
    99+
    2023-06-13
  • SpringBoot 项目添加 MDC 日志链路追踪的执行流程
    目录1. 线程池配置2. 拦截器配置3. 日志文件配置4. 使用方法示例4.1. 异步使用4.2. 定时任务日志链路追踪的意思就是将一个标志跨线程进行传递,在一般的小项目中也就是在你...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作