美文网首页
go切片和map传参注意事项

go切片和map传参注意事项

作者: hewolf | 来源:发表于2021-05-08 18:24 被阅读0次

切片传参

func TestSliceParam(t *testing.T) {
    a := []int{1, 2, 3}
    fmt.Println(a)
    SliceFunc(a)
    fmt.Println(a)
}
func SliceFunc(a []int) {
    a[0] = 11
    a = append(a, 4)
    fmt.Println(a)
}
output:
[1 2 3]
[11 2 3 4]
[11 2 3]

传参到函数里面,如果重新赋值,会直接在主程序中表现出来,但是如果是扩容新加的数据,只会在函数中生效,不会在主程序中生效,说明传参的时候slice是值传递,但是每个指向内容是引用类型

map传参

func TestMapParam(t *testing.T) {
    a := map[int]int{1: 11, 2: 22, 3: 33}
    fmt.Println(a)
    MapFunc(a)
    fmt.Println(a)
}
func MapFunc(a map[int]int) {
    a[1] = 22
    a[4] = 44
    fmt.Println(a)
}
output:
map[1:11 2:22 3:33]
map[1:22 2:22 3:33 4:44]
map[1:22 2:22 3:33 4:44]

传参到函数里面,不管是改变值还是新加值,函数和主程序都会表现出来,说明map虽然值传递,但是最终指向都是引用类型

相关文章

  • go切片和map传参注意事项

    切片传参 传参到函数里面,如果重新赋值,会直接在主程序中表现出来,但是如果是扩容新加的数据,只会在函数中生效,不会...

  • Go每日精选(2019-06-14)- 基础部分

    1. Go语言的传参和传引用 2. PHP转Go系列:数组与切片 3. Golang 入门 : channel(...

  • Golang基础

    基础 定义变量 函数 循环 条件语句 指针 结构体 数组和切片 map 函数传参传函数 方法 接口 Reader ...

  • 数组和切片区别

    数组赋值会直接拷贝一份,而切片赋值会传指针。 函数传参,同上 当切片append的时候,go会考虑切片的cap值,...

  • golang系列教程

    Go包管理 Go开发工具 Go Doc 文档 Go 数组 Go 切片 Go Map Go 类型 Go 函数方法 G...

  • Go语言map和slice的内存管理

    1. 前言   Go语言传参既支持传值,也支持传引用。基础类型的传递比较清晰,本文记录下传递map和slice的原...

  • Mybatis mapper文件中传递多个参数的4种方式

    方法1:顺序传参法 方法2:@Param注解传参法 方法3:Map传参法 方法4:Java Bean传参法

  • Vue-Router

    路由传参 注意事项 区分 router 和 route 区分replace 和 push

  • <>

    数组和切片 切片和数组的区别 数组是属于值类型。结构体,基础类型数据也属于值类型。 注意GO语言对于“传值和传引用...

  • Go语言实战(三) - 内置容器

    本节我们来学习数组,切片,Map和字符串。在Go语言中,我们一般不直接使用数组,而是使用切片来管理线性表结构,它的...

网友评论

      本文标题:go切片和map传参注意事项

      本文链接:https://www.haomeiwen.com/subject/rdxpdltx.html