-
形参和实参的区别
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。
实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该函数运行结束的时候形参被释放,而实参内容不会改变。
而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参本身。所以在函数体内部可以改变实参的值。
查看全部 -
注意,当一个函数中存在多个
defer
语句时,它们携带的表达式语句的执行顺序一定是它们的出现顺序的倒序。查看全部 -
哎 这个老师喜欢用很复杂的话来说一件很简单的事情 绕来绕去的很好玩吗 这样很费脑筋啊 看一句话看半天
例如 “对照这张表格,我们就能够解释上面那条
for
语句打印出的内容了,即:每次迭代出的第一个值所代表的是第二个字符值经编码后的第一个字节在该字符串经编码后的字节数组中的索引值。请大家真正理解这句话的含义。”说的就是字符经过UTF-8编码之后的索引
该字符所占第一个字节的位置就是该字符的索引值啊 ~~为什么要说那么绕 要不是学过C我真看不懂。
查看全部 -
工作区和GOPATH目录
查看全部 -
携带
range
子句的for
语句还可以应用于一个通道值之上。其作用是不断地从该通道值中接收数据,不过每次只会接收一个值。注意,如果通道值中没有数据,那么for
语句的执行会处于阻塞状态。无论怎样,这样的循环会一直进行下去。直至该通道值被关闭,for
语句的执行才会结束。和channel相关
查看全部 -
变量查看全部
-
recover调用一定要在发生异常(panic调用)之前
控制权交到调用包含recover语句的函数的函数,包含recover的函数后面的代码都不会执行了
查看全部 -
default语句的执行顺序和它放的位置无关
fallthrough语句只能贯穿一条case语句,而不是所有
fallthrough语句放在最后一个case语句中会编译出错
查看全部 -
Go语言定义指针的方式与C/C++不同,*需要放在类型之前,如:
var p *int // Golang,自动初始化为nil
int* p = null; // C/C++查看全部 -
切片操作方括号中的第三个参数也是索引值,也就是说容量最多可以到达底层数组(切片)的哪个位置,举个例子:
number := [...]{1, 2, 3, 4, 5, 6, 7, 8, 9}
slice := number[ 1 : 3 : 5 ]
上面切片方括号中的1,3,5表示的都是索引,即是说:slice切片的元素从number数组中索引为1的元素开始,到索引为(3-1=2)的元素结束,容量到索引为(5-1=4)的元素结束。
所以:
slice的长度 = 3 - 1 = 2
slice的容量 = 5 - 1 = 4
查看全部 -
数组也可以被切片,返回的是切片
新切片的容量 = 原切片(数组)的容量 - 切片起始下标
例:
var array = [5]int //cap(array) = 5
var slice = array[2 : 4]
那么:
cap(slice) = cap(array) - 2 = 5 -2 = 3
查看全部 -
//声明数组的三种方式:
var array1 = [5]int
var array2 = [5]int {1, 2, 3}
var array3 = [...]int {1, 2, 3, 4, 5}
//注:方括号中必须写明数组长度或者...,否则定义的将是切片而不是数组
查看全部 -
//变量赋值的方式
num1 := 1
num2, num3 := 2, 3
var num4 = 4
var num5 int = 5
var num6, num7 = 6, 7
var num8, num9 int = 8, 9
var (
num10 = 10
num11 = 11
)
var (
num12 int = 12
num13 int = 13
)
//注:const和var的用法完全一样
查看全部 -
其实标识符可以是下划线开头的,但数字是真的不可以。
查看全部 -
<img src="https://img1.sycdn.imooc.com//5abf67490001a13a05000398.jpg" title="" alt="https://img1.sycdn.imooc.com//5abf67490001a13a11620924.jpg" />查看全部
举报