一个游离于山间之上的Java爱好者 | A Java lover living in the mountains
在前面几篇文章,我们一直在使用Println、Printf函数,你可能没有特别注意到,就是我们可以传入任意参数。而这种可以接受任意实参的函数,函数的形参极有可能是可变参数,使用...type可声明可变参数,但必须是形参列表的最后
Println、Printf
可变参数
...type
一上来乍一看,函数变量?这究竟是什么意思呢?你函数就函数,变量便是变量,这两者搞在一块,到底是几个意思呢? 其实啊,在Go当中,函数也是一种类型,既然是类型,那就可以向其它类型一样,给变量定义类型啊!而这个类型是函数,所以函数类型
Go
函数
函数类型
在前面几篇文章,接触到的最多的是main函数。Go 如同c/c++语言一样,对于声明函数也有属于自己的一套规则。
main
c/c++
在提到关键字goto,想必很多人都心有余悸吧,毕竟goto可是编程语言界破坏代码可读性的罪魁祸首啊!以至于像c/c++或类 c 的编程语言,都将goto作为保留关键字,不建议使用,但如果你非要使用,谁人可阻止呢?
goto
相较于c/c++等的switch case,Go对switch做了很大改进,case与case之间是不需要写上break,也能跳出当前case语句,而且,switch表达式可以是任何类型的噢!
switch case
switch
case
break
Go当中只有for循环结构,可没有像c/c++语言有while、do ... while的。for循环结构与if分支结构一样,可以省略(),左大括号{必须与for在同一行。
for
while
do ... while
if
()
{
Go当中的if分支与c/c++大致相同,只是可以省略条件表达式的小括号(),真的是,```G哦·``就是要特立独行。
条件表达式
列表插入函数的返回值会提供一个 *list.Element 结构,这个结构记录着列表元素的值以及与其他节点之间的关系等信息,从列表中删除元素时,需要用到这个结构进行快速删除。
其实,map是一对key(键)与value(值)对应的无序集合,又称为关联数组或字典。
map
key(键)
value(值)
关联数组
字典
其实啊,切片就好像一个完整的蛋糕,你用刀切了一小块,而这一块就是从那完整的蛋糕切了下来。
与c/c++语言一样,数组的每个元素可以通过索引下标进行访问,索引下标是从0开始到数组长度减去1的位置。内置函数 len()可以返回数组中元素的个数。
索引下标
0
内置函数 len()
类型别名顾名思义就是给类型起个别名。就像上学时候,同学间开玩笑,给人以某种特征起了个外号,又或是英语老师给你起个英文名字,不管是外号、小名还是英文名字,最终都是指向你。
*操作符作为右值时,意义是取指针的值,作为左值时,也就是放在赋值操作符的左边时,表示 a 指针指向的变量。其实归纳起来,*操作符的根本意义就是操作指针指向的变量。当操作在右值时,就是取指向变量的值,当操作
*
右值
取指针的值
左值
赋值操作符的左边
a 指针指向的变量
指针指向的变量
取指向变量的值
标识符是指Go语言对各种变量、方法、函数等命名时使用的字符序列,标识符由若干个字母、下划线 _ 、和数字组成,且第一个字符必须是字母。通俗的讲就是凡可以自己定义的名称都可以叫做标识符。
Go语言
字符序列
标识符
字母
下划线 _
数字
且第一个字符必须是字母
Go中定义常量与C语言一样,也是使用const关键字来定义常量的。常量声明语法:const name [typeName] = value,其中typeName(类型)可省略! 常量可以是字符、字符串、布尔值或数值。 常量不能用 := 语法声明。
C语言
const
const name [typeName] = value
typeName
:=