go语言学习(二)

2020-07-09 00:00:00 函数 参数 方法 类型 指针

一、Go 三个点省略号"..."使用总结:
1. 在数组字面量中,如果省略号"..."出现在数组长度的位置,那么数组的长度由初始化数组的元素个数决定[注意:如果没有省略号也没有长度数字,则为切片slice, 即为动态数组];
2.打散slice,表示如何将一个slice转换为参数列表;
3.在参数列表后的类型名称之前使用省略号“...”表示声明一个参数可变函数,调用这个函数的时候可以传递该类型任意数目的参数。尽管...type参数就像函数体内的slice,但变长函数的类型和带有普通slice参数的函数类型不相同,所以在传参的时候也是有所区别。...type格式的类型只能作为函数的参数类型存在,并且必须是后一个参数。它是一个语法糖(syntactic sugar),即这种语法对语言的功能并没有影响,但是更方便程序员使用。

二、方法声明
在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义了一个独占的方法,如下图:

方法举例

当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要更新一个变量,或者函数的其中一个参数实在太大我们希望能够避免进行这种默认的拷贝,这种情况下我们就需要用到指针了。对应到我们这里用来更新接收器的对象的方法,当这个接受者变量本身比较大时,我们就可以用其指针而不是对象来声明方法,如下:

func (p *Point) ScaleBy(factor float64) {
    p.X *= factor
    p.Y *= factor
}

相关文章