go语言-golang基础-语法糖
语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
1、比如说参数不定的情况
Go语言函数中有三个点···
表示为可变参数,这是Go的糖衣语法,表示可以接受任意个数但相同类型的参数。
- 示例
func print(values ...string) { //可以接受任意个string参数 for _, v := range values { fmt.Println("---> ", v) } } func main() { values := []string{"abc", "def", "hig", "klm",} print(values...) }
func myFunc1(args ...int){ for _,arg:=range args{ fmt.Println(arg) } } func myFunc2(args []int){ for _,arg:=range args{ fmt.Println(arg) } } myFunc1中就是使用的语法糖,按照它的内部机理来说,…type本质上是一个数组切片,也就是[]type,这也就是上面的参数args可以使用for循环来获取每一个传入的参数。 虽然myFunc2也实现了不定参数的功能,但是使用起来远不是那么简单。打个比方 对于myFunc1来说调用它如下代码: myFunc1(2,3,4) 而对于myFunc2来说调用它却是如下代码: myFunc2([]int{2,3,4}),
2、在赋值方面的体现
:=是Go的赋值与声明语法糖,它的功能是声明、赋值和类型推断
- 示例
//第一种方法 var number1 number2 number3 int number1, number2, number3 = 1, 2, 3 //第二种方法 var number1, number2, number3 = 1, 2, 3 //第三种方法 number1, number2, number3 := 1, 2, 3
注意事项
- := 只有在左侧有未定义变量时才能使用(有定义的变量也可以)
- := 只进行语义上的检查,循环内也可以使用,第一次之后的效果和=相同
- := 和 = 都要求左右的值和变量一一对应,不会截断
- 特殊情况,map、chan、类型推定可以返回一个值,也可以是两个值
- 当map中该键不存在时,总是返回零值和false,否则后者返回true
- 当chan关闭以后,总是返回零值和false,否则后者返回true