iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go中数组传参的方式有哪些
  • 849
分享到

Go中数组传参的方式有哪些

2023-07-05 09:07:16 849人浏览 安东尼
摘要

这篇文章主要介绍“Go中数组传参的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go中数组传参的方式有哪些”文章能帮助大家解决问题。初学golang,数组传参问题就是把我整不会了,以前我们

这篇文章主要介绍“Go数组传参的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go中数组传参的方式有哪些”文章能帮助大家解决问题。

初学golang,数组传参问题就是把我整不会了,以前我们使用C语言进行数组传参时是这样传递的,直接传递数组的起始地址即可。

Go中数组传参的方式有哪些

而在go中数组传参我们以以下两种方式进行传递,这里我直接贴出go代码,文中有注释:

package mainimport "fmt"func testArr01(arr []int) { //形参未指定大小arr[0]++}func testArr02(arr [5]int) { //形参指定大小arr[0]++}func testArr03(arr *[5]int) { //使用指针方式,也就是引用传递arr[0]++}func main() {var arr = [5]int{0, 2, 3, 17, 50}testArr01(arr[:]) //切片方式传递(常用)for i := 0; i < len(arr); i++ {fmt.Printf("%d ", arr[i])}fmt.Println()testArr02(arr) //数组名方式传递,此时传递的是副本,并不会改变原数组for i := 0; i < len(arr); i++ {fmt.Printf("%d ", arr[i])}fmt.Println()testArr03(&arr) //指针方式传递,会改变原数组for i := 0; i < len(arr); i++ {fmt.Printf("%d ", arr[i])}fmt.Println()}

运行结果:

Go中数组传参的方式有哪些

至此,我们发现,通过数组名传递参数方式并不能修改原数组,而通过切片方式传递能完成数组修改,这是因为,和其他语言不同,go语言在将数组名作为函数参数的时候,参数传递即是对数组的复制。在形参中对数组元素的修改都不会影响到数组元素原来的值。而在使用slice作为函数参数时,进行参数传递将是一个地址拷贝,即将底层数组的内存地址复制给参数slice。这时,对slice元素的操作就是对底层数组元素的操作。采用指针方式进行传递就是传递的引用,对这个引用指向的地址的内容进行修改也会影响原数组的值。

总结:在Go语言中函数的参数有两种传递方式,按值传递和按引用传递。Go默认使用按值传递来传递参数,也就是传递参数的副本。在函数中对副本的值进行更改操作时,不会影响到原来的变量。按引用传递其实也可以称作"按值传递",只不过该副本是一个地址的拷贝,通过它可以修改这个值所指向的地址上的值。

Go语言中,在函数调用时,引用类型(slice、map、interface、channel)都默认使用引用传递。

数组传递时的一些缺点

一般情况下,传递指针的消耗比传递副本的少,尤其是当数组特别大时。具体原因是:

  • 值传递需要完整的复制初始数组并将这份拷贝放到栈中,这将耗费大量运行时间,因而值传递方式的效率比较低。

  • 初始数组的拷贝需要占用额外的内存空间(栈中的内存)

  • 编译程序需要专门产生一部分用来复制初始数组的代码,这将使程序变大。

关于“Go中数组传参的方式有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Go中数组传参的方式有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • Go中数组传参的方式有哪些
    这篇文章主要介绍“Go中数组传参的方式有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go中数组传参的方式有哪些”文章能帮助大家解决问题。初学Golang,数组传参问题就是把我整不会了,以前我们...
    99+
    2023-07-05
  • Go语言二维数组的传参方式有哪些
    小编给大家分享一下Go语言二维数组的传参方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!go适合做什么go是golang的简称,而golang可以做服务器...
    99+
    2023-06-14
  • Go中数组传参的几种方式小结
    初学Golang,数组传参问题就是把我整不会了,以前我们使用c语言进行数组传参时是这样传递的,直接传递数组的起始地址即可。 而在go中数组传参我们以以下两种方式进行传递,这里我直接...
    99+
    2023-03-08
    Go 数组传参
  • python传递参数的方式有哪些
    在Python中,有以下几种方式可以传递参数:1. 位置参数:按照参数顺序传递,参数的位置和数量必须与函数定义中的参数一致。```p...
    99+
    2023-09-27
    python
  • c#参数传递的方式有哪些
    在C#中,参数传递的方式有以下几种:1. 值传递(By Value):将实参的值复制给形参,即在函数内部对形参的修改不会影响实参的值...
    99+
    2023-10-18
    c#
  • React传递参数的方式有哪些
    本篇内容介绍了“React传递参数的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!父子组件之间传递参数父组件往子组件传值,直接用t...
    99+
    2023-06-20
  • Go语言二维数组的传参方式
    用Go语言实现动态规划问题的时候在二维数组的传参改变这个地方有了点疑惑,查了会儿资料,然后达到了目的(其实还是想知道切片的话可不可以二维),所以记录一下 看代码吧~ pack...
    99+
    2022-06-07
    二维数组 GO 维数 二维 go语言 数组
  • python中函数传递参数的方式有哪些
    本篇文章为大家展示了python中函数传递参数的方式有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不...
    99+
    2023-06-14
  • JavaScript传参的方式有哪些
    这篇文章主要介绍“JavaScript传参的方式有哪些”,在日常操作中,相信很多人在JavaScript传参的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript传参的方式有哪些”的疑...
    99+
    2023-07-05
  • ajax中data传参的方式有哪些
    这篇文章主要介绍ajax中data传参的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:1. POST方式: function orderCancel(o...
    99+
    2022-10-19
  • JavaScript函数参数的传递方式有哪些
    这篇文章主要介绍了JavaScript函数参数的传递方式有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。JavaScript使用一个变量...
    99+
    2022-10-19
  • vue-router传参的方式有哪些
    这篇文章将为大家详细讲解有关vue-router传参的方式有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Vue Router 是 Vue.js 官方的...
    99+
    2022-10-19
  • java线程传递参数的方式有哪些
    在Java中,线程传递参数的方式有以下几种: 使用构造函数传递参数:可以在创建线程对象时,通过构造函数将参数传递给线程对象。通过...
    99+
    2023-10-27
    java
  • python可变参数的传递方式有哪些
    这篇文章主要讲解了“python可变参数的传递方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python可变参数的传递方式有哪些”吧!1、包裹位置传递,所有的传入参数都会被args...
    99+
    2023-06-20
  • uniapp路由传参的方式有哪些
    在uniapp中,路由传参的方式有以下几种: query传参:通过在url中添加查询参数,例如/pages/home/homep...
    99+
    2023-10-22
    uniapp
  • vue路由传参方式有哪些
    在vue中实现路由传参的方式有:1.通过$router.push携带参数传参;2.通过params传递实现传参;3.通过query传递实现传参;在vue中实现路由传参的方式有有以下几种通过$router.push携带参数实现路由传参getD...
    99+
    2022-10-24
  • Spring MVC传递接收参数方式有哪些
    这篇文章主要介绍“Spring MVC传递接收参数方式有哪些”,在日常操作中,相信很多人在Spring MVC传递接收参数方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring MVC传递接收参...
    99+
    2023-06-25
  • SpringMVC中参数的传递方法有哪些
    这篇文章主要介绍“SpringMVC中参数的传递方法有哪些”,在日常操作中,相信很多人在SpringMVC中参数的传递方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
  • Spring Data JPA中in条件参数的传递方式有哪些
    这篇文章主要介绍Spring Data JPA中in条件参数的传递方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!关于Spring Data JPA中自定义sql 条件的 in参数记录此文做一个记录,以便以后...
    99+
    2023-06-15
  • python传入参数的方法有哪些
    在Python中,传递参数的方法有以下几种:1. 位置参数(Positional Arguments):按照参数在函数定义时的顺序进...
    99+
    2023-09-16
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作