返回顶部
首页 > 资讯 > 后端开发 > GO >golang copy函数使用的坑有哪些
  • 237
分享到

golang copy函数使用的坑有哪些

2023-07-05 20:07:59 237人浏览 泡泡鱼
摘要

这篇文章主要介绍“golang copy函数使用的坑有哪些”,在日常操作中,相信很多人在Golang copy函数使用的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang&

这篇文章主要介绍“golang copy函数使用的坑有哪些”,在日常操作中,相信很多人在Golang copy函数使用的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang copy函数使用的坑有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

之前用 copy 不多,本以为它是个很方便的函数,没想到在做练习题时竟还是被它坑了。是我对他期望太多了。

func copy(dst, src []Type) int

基本认识:

  • 它只能用于切片,不能用于 map 等任何其他类型

  • 它返回结果为一个 int 型值,表示 copy 的长度

坑位一:切片 dst 需要先初始化长度

不是你定义好类型,就能将 src 完全 copy 到 dst 的,你需要初始化长度。

  • 如果 dst 长度小于 src 的长度,则 copy 部分;

  • 如果大于,则全部拷贝过来,只是没占满 dst 的坑位而已;

  • 相等时刚好不多不少 copy 过来。

坑位二:源切片中元素类型为引用类型时,拷贝的是引用

由于只 copy 切片中的元素,所以如果切片元素的类型是引用类型,那么 copy 的也将是个引用。

如下面例子,matA 和 matB 地址不一样,但 matA[0] 和 matB[0] 的地址是一样的。

func wronGCopyMatrix() {    matA := [][]int{        {0, 1, 1, 0},        {0, 1, 1, 1},        {1, 1, 1, 0},    }    matB := make([][]int, len(matA))    copy(matB, matA)    fmt.Printf("%p, %p\n", matA, matA[0]) // 0xc0000c0000, 0xc0000c2000    fmt.Printf("%p, %p\n", matB, matB[0]) // 0xc0000c0050, 0xc0000c2000}

如果想 copy 多维切片中的每一个切片类型的元素,那么你需要将每个切片元素进行 初始化 并 拷贝。注意是两步:先 初始化,再 拷贝。

正确的拷贝一个多维数组

func rightCopyMatrix() {    matA := [][]int{        {0, 1, 1, 0},        {0, 1, 1, 1},        {1, 1, 1, 0},    }    matB := make([][]int, len(matA))    for i := range matA {        matB[i] = make([]int, len(matA[i])) // 注意初始化长度        copy(matB[i], matA[i])    }    fmt.Printf("%p, %p\n", matA, matA[0]) // 0xc00005c050, 0xc000018560    fmt.Printf("%p, %p\n", matB, matB[0]) // 0xc00005c0a0, 0xc0000185c0}

到此,关于“golang copy函数使用的坑有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: golang copy函数使用的坑有哪些

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

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

猜你喜欢
  • golang copy函数使用的坑有哪些
    这篇文章主要介绍“golang copy函数使用的坑有哪些”,在日常操作中,相信很多人在golang copy函数使用的坑有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”golang&...
    99+
    2023-07-05
  • 使用recvfrom函数遇到的坑有哪些
    使用recvfrom函数时可能会遇到以下几个常见的问题:1. 阻塞问题:recvfrom函数默认是阻塞的,即当没有收到数据时,程序会...
    99+
    2023-08-24
    recvfrom
  • 使用Python的坑有哪些
    这篇文章主要讲解了“使用Python的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“使用Python的坑有哪些”吧!坑01 - 整数比较的坑在 Python 中一切都是对象,整数也是...
    99+
    2023-06-02
  • golang for range中的坑有哪些
    本篇内容主要讲解“golang for range中的坑有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“golang for range中的坑有哪些”吧!go 语言 for range 中的...
    99+
    2023-07-04
  • 使用golang匿名函数有哪些好处
    使用golang匿名函数的好处包括:1. 简洁:匿名函数可以在需要时直接定义和使用,不需要单独定义一个函数,并且可以直接传递给其他函...
    99+
    2023-10-20
    golang
  • 使用Python坑有哪些
    本篇内容介绍了“使用Python坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!缩进,符号和空格不正确写代码时大家会使用缩进、对齐、空...
    99+
    2023-06-02
  • golang闭包函数的作用有哪些
    闭包函数在Go语言中的作用有以下几个:1. 实现函数柯里化:闭包函数可以将函数的部分参数固定住,返回一个新的函数。这样可以简化函数的...
    99+
    2023-10-20
    golang
  • golang函数的利弊有哪些?
    go 函数的优点包括:一等公民,可传递、返回和存储;声明式语法,简洁易读;并行性,支持并发编程;闭包,实现状态保存。缺点包括:强制类型化,可能导致冗余代码;命名约定限制;没有泛型,无法创...
    99+
    2024-04-19
    golang 函数利弊
  • golang recover函数使用的坑怎么解决
    这篇文章主要讲解了“golang recover函数使用的坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“golang recover函数使用的坑怎么解决”吧!一...
    99+
    2023-07-05
  • C++构造函数常见的坑有哪些
    今天就跟大家聊聊有关C++构造函数常见的坑有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。某一天我们接到了一个需求,需要开发一个类似于STL中string的类。我们很快写好了代码...
    99+
    2023-06-22
  • Golang中的匿名函数有哪些
    这篇文章主要为大家详细介绍了Golang中的匿名函数有哪些,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:golang的优点有哪些golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接...
    99+
    2023-06-06
  • Golang函数的缺点又有哪些?
    go 函数的缺点包括:值语义:函数只能修改参数的副本,不会影响原始变量。缺乏泛型:不支持类型参数,导致代码重复和维护困难。缺乏面向对象继承:使用嵌套类型模拟继承,使得方法共享更加困难。函...
    99+
    2024-04-12
    golang 缺点
  • python中copy()函数有什么用
    这篇文章主要为大家展示了“python中copy()函数有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中copy()函数有什么用”这篇文章吧。copy()描述:复制文件语法:...
    99+
    2023-06-03
  • golangcopy函数使用的坑
    目录坑位一:切片 dst 需要先初始化长度坑位二:源切片中元素类型为引用类型时,拷贝的是引用之前用 copy 不多,本以为它是个很方便的函数,没想到在做练习题时竟还是被它坑了。是我对...
    99+
    2023-05-14
    golang copy
  • Golang 函数测试的常用工具有哪些?
    在 go 中进行函数测试,可以使用:标准库中的 testing 包:提供基本断言函数。第三方工具,如:testify/assert:提供更丰富的断言方法。gomock:创建 mock 对...
    99+
    2024-04-16
    单元测试 集成测试 git golang 标准库
  • Golang 函数类型的常见用途有哪些?
    函数类型在 go 中表示函数,用途包括:回调函数,用于异步执行代码完毕后调用。比较函数,用于排序元素。生成器函数,用于生成值。高阶函数,接受函数作为参数或返回函数。类型断言,检查接口变量...
    99+
    2024-04-19
    golang 函数类型
  • golang函数的最佳实践有哪些?
    go 函数的最佳实践包括:函数长度应小于 100 行。参数数量应尽量少。参数类型应尽可能具体。返回值应尽可能具体。函数应妥善处理错误。函数应进行单元测试。 Go 函数的最佳实践 函数长...
    99+
    2024-05-02
    golang 函数最佳实践
  • 使用条件变量的坑有哪些
    本篇内容介绍了“使用条件变量的坑有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 什么是...
    99+
    2024-04-02
  • VUE使用中踩过的坑有哪些
    小编给大家分享一下VUE使用中踩过的坑有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.路由变化页面数据不刷新问题出现这种...
    99+
    2024-04-02
  • golang函数有哪些基本类型?
    答案: go 函数有不同类型,包括基本类型(无参数和返回类型)、接受参数类型、返回类型、可变参数类型和函数作为参数类型。详细描述:基本类型函数:无参数或返回类型,用于初始化或执行简单任务...
    99+
    2024-05-23
    golang 基本类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作