Golang 教程
Golang 控制语句
Golang 函数 & 方法
Golang 切片 & 数组
Golang 结构体
Golang 字符串
Golang 接口
Golang 指针
Golang 并发
Golang 异常(Error)
Golang 其他杂项

Go 切片作为函数参数

时间:2023年06月10日 阅读:179
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

slice是一个可变长度序列,用于存储相似类型的元素,不允许在同一slice中存储不同类型的元素。就像具有索引值和长度的数组一样,但是切片的大小允许调整,它们不像数组那样处于固定大小。在Go语言中,允许您将切片传递给函数,这意味着该函数获取切片的副本。
切片将按值与切片的容量,长度一起传递给函数,并且切片的指针始终指向基础数组。 因此,如果我们对通过值传递给函数的切片进行了一些更改,则会反映在函数外部存在的切片中。让我们借助示例来讨论这个概念:

//向函数传递一个切片
package main

import "fmt"

//切片所在的函数
//通过值传递
func myfun(element []string) {

    //修改给定的切片
    element[2] = "Java"
    fmt.Println("修改切片: ", element)
}

func main() {

    //创建切片
    slc := []string{"C#", "Python", "C", "Perl"}

    fmt.Println("初始切片: ", slc)

    //将切片传递给函数
    myfun(slc)

    fmt.Println("最终切片:", slc)

}

输出:

初始切片:  [C# Python C Perl]
修改切片:  [C# Python Java Perl]
最终切片: [C# Python Java Perl]

用法说明:在上面的示例中,我们有一个名为slc的切片。这个片通过myfun()函数传递。正如我们所知,切片指针总是指向相同的引用,即使它们在函数中传递。因此,当我们将值C,索引值为2更改为Java时。这个变化也反映了函数外部的切片,所以修改后的最后一个切片是[c# Python Java perl]。

//将切片传递给函数
package main

import "fmt"

//通过值传递
func myfun(element []string) {

    //这里我们只修改切片
    //使用append函数
    //在这里,此函数仅修改
    //存在于其中的切片的副本
    //该函数不修改原始切片
    element = append(element, "Java")
    fmt.Println("修改切片: ", element)
}

func main() {

    //创建切片
    slc := []string{"C#", "Python", "C", "Perl"}

    fmt.Println("初始切片: ", slc)

    //传递切片
    //到函数
    myfun(slc)
    fmt.Println("最终切片: ", slc)

}

输出:

初始切片:  [C# Python C Perl]
修改切片:  [C# Python C Perl Java]
最终切片:  [C# Python C Perl]
打赏

本文地址:https://www.momojc.cn/golang/go-copy-slice-to-function.html

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.038 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计