Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断
整形:值传递
package mainimport "fmt"func Swap(num1, num2 int) {num1, num2 = num2, num1fmt.Println(num1, num2)
}
func main() {num1 := 10num2 := 20Swap(num1, num2)fmt.Println(num1, num2)
}
字符串:值传递
package mainimport "fmt"func Swap(s1, s2 string) {s1, s2 = s2, s1fmt.Println(s1, s2)
}
func main() {s1 := "aaaaaaa"s2 := "bbbbbbb"Swap(s1, s2)fmt.Println(s1, s2)
}
数组:值传递
package mainimport "fmt"func Swap(array [3]int) {array[0] = 0array[1] = 1array[2] = 2fmt.Println(array)
}
func main() {array := [3]int{8, 8, 8}Swap(array)fmt.Println(array)
}
切片:地址传递
package mainimport "fmt"func Swap(slice []int) {slice[0] = 0slice[1] = 1slice[2] = 2fmt.Println(slice)
}
func AppendTest(slice []int) {slice = append(slice, 4)
}
func AppendTest1(slice []int) []int {slice = append(slice, 4)return slice
}
func main() {slice := []int{8, 8, 8}Swap(slice)fmt.Println(slice)AppendTest(slice)fmt.Println(slice)slice = AppendTest1(slice)fmt.Println(slice)
}
注意:如果在调用的函数中,原始切片的容量发生了改变,系统就会在新的地址生成新的切片,原始切片不会发生变化。
map:地址传递
package mainimport "fmt"func test(m map[int]string){delete(m,1)
}func main(){m := map[int]string{1:"make",2:"Go"}test(m)fmt.Println(m)
}
结构体:值传递
package mainimport "fmt"type Student struct {id intname string
}func test(stu Student) {stu.id = 2stu.name = "李四"fmt.Println(stu)
}func main() {stu := Student{1, "张三"}test(stu)fmt.Println(stu)
}
指针:地址传递
&变量 取地址操作 引用运算符
*指针变量 取值操作 解引用运算符
package mainimport "fmt"type Student struct {id intname string
}func Swap(num1, num2 *int) {*num1, *num2 = *num2, *num1fmt.Println(*num1, *num2)
}func main() {a := 10b := 20c := &ad := &bSwap(c, d)fmt.Println(*c, *d)
}
Go基础:不同数据类型作为函数参数传递值传递/地址(引用)传递判断相关推荐
- c#数据类型的值传递和引用传递--基础拾遗
竟然一不小心犯了低级错误,数据类型的值类型和引用类型弄混了. 想用list记录下所有的二维数组值,结果发现list里所有的值都是一样的. 值类型和引用类型: C#数据类型分为两大类:值类型和引用类型. ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- C语言基础:数组作为函数参数传递演示源码
将做工程过程中常用的内容片段记录起来,如下内容内容是关于C语言基础:数组作为函数参数传递演示的内容,应该能对小伙伴也有好处. #include <stdio.h>void show_arr ...
- c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...
函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...
- Python的函数参数传递:传值?引用?
From: http://blog.csdn.net/winterttr/article/details/2590741 作者:winterTTr (转载请注明) 我想,这个标题或许是很多初学者的问题 ...
- 基础回顾(正则、循环、和、 int和Integer、String /StringBuffer、Array和ArrayList、值传递和引用传递、 Lamda、java8)
1. 正则表达式 1.1 Java中是如何支持正则表达式操作的? Java中的String类提供了支持正则表达式操作的方法,包括:matches().replaceAll().replaceFirst ...
- java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
java面试题:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递.Java编程语言只有值传递参数. 当一个对象实 ...
- 【重难点】【Java基础 04】值传递和引用传递、序列化和反序列化
[重难点][Java基础 04]值传递和引用传递.序列化和反序列化 文章目录 [重难点][Java基础 04]值传递和引用传递.序列化和反序列化 一.值传递和引用传递 1.对比 二.序列化 1.基本概 ...
- Javascript 之《函数传参到底是值传递还是引用传递》
前言 这个问题其实困惑了我好久,但是在实际使用中总是得过且过,不想去深究.由于这种态度,在学习 Javascript 过程中,水平一直都是出于半桶水状态,很多概念和原理似懂非懂,模糊不清. 所以,写了 ...
- Java中的参数传递,到底是值传递还是引用传递?
文章内容为转载,转载自公众号Hollis关于我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 原文链接:我要彻底给你讲清楚,Java就是值传递,不接受争辩的那种! 知乎回答链接:Java 到 ...
最新文章
- 大数据分布式集群搭建(插曲)
- ASP.NET MVC 2
- Step By Step_Java通过JNI调C程序执行
- Spark-shell和Spark-hive的使用
- DCASE挑战赛原始提案文件(详细信息)
- python取前三位_Python 实现取多维数组第n维的前几位
- 计算机中丢失msc,mscvr120.dll32位/64位版_修复计算机中丢失msvcr120.dll
- 360互联网技术训练营第七期 -“遇见”PIKA
- 如何验证登录oracle,Oracle登录验证方式详解
- 经历越多困难,你就变的更韧性
- python barh_Python matplotlib.axes.Axes.barh()用法及代码示例
- 获得Azure订阅LoadBalancer的脚本
- 高并发高负载系统架构-php篇
- [题解]诸侯安置(dp+组合)
- Struts框架详解
- Delphi7--循环结构语句
- dp在约会上是什么意思_dp是什么意思网络术语 饭圈为什么喜欢用缩写
- UnityShader实现漫反射光照模型和高光反射光照模型
- Moss 2007 入门(1) - 功能概述
- 百度、百事、大众、脸书、WeWork、领航等公司高管变动