1、变量定义
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
声明变量的一般形式是使用 var 关键字:
var identifier type
可以一次声明多个变量:
var identifier1, identifier2 type
go语言与其他语言不同的是,go语言是变量在前,类型在后
我们在定义变量的时候是先想到变量的类型还是变量的名称?
我想一般是变量的名称,这也是这种变量声明这样设计的原因之一
变量声明举例如下图所示
如图所示,但是为什么这个时候变量名下方标红了呢?
代码示例:
根据编译器的提示,是因为这个声明的变量没有被用到
go语言在这方面非常严谨,声明的变量一定要被用到,要不然就无法通过编译
没有用到的变量就不要声明,这种做法也可以降低我们的代码维护成本
当我们打印这两个未赋值的变量的时候,不会出现异常,因为go语言已经给他们设置了初值
代码示例:
如图所示,a的初值为0,b的初值是空字符串
go语言定义变量在赋初值的情况可以不用声明变量类型,编译器会自动识别,自动决定类型
代码示例:
如上图所示, 每种变量在赋初值之后都可以在不指定变量类型的情况下正常使用
除此之外,还可以使用如下方式,一次性定义所有变量
代码示例:
除了使用var关键字定义变量之外,我们还可以使用 := 的方式来定义
代码示例:
但是需要注意,这种不用var关键词的定义方式只能在函数内部使用
2、内建变量类型
go语言提供丰富的内建变量类型
参考
注意
1、当进行浮点数运算或转换的时候可能会出现精度丢失问题,这个时候可以引入decimal包来解决这个问题
2、go语言当中只有强制类型转换,没有隐式类型转换
3、go语言当中没有char类型作为字符,但是有rune字符与其对应,细节参考浅析rune数据类型,byte 等同于int8,常用来处理ascii字符,rune 等同于int32,常用来处理unicode或utf-8字符
3、指针定义
go语言当中也有指针,不过相对于c语言来说,go语言的指针简单很多
为什么说go语言的指针的比c语言的简单呢?它简单就简单在它不能运算。
类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:
var var_name *var-type
var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。
指针使用流程:
1、定义指针变量。
2、为指针变量赋值。
3、访问指针变量中指向地址的值。
代码示例:
4、常量定义
常量定义,和其他语言差不多,都是使用const来进行定义
声明变量的一般形式是使用 var 关键字:
const identifier type
可以一次声明多个变量:
const identifier1, identifier2 type
也可以进行一次性定义,例如:
const(
hello string = "hello"
world string = "world"
)
注意:
1、常量被定义后可以不使用,但是定义时必须被赋值
2、在使用Java语言的时候,按照规范,常量名必须全部大写,但是在go语言当中不能按照这种规范
这是由于go语言并没有作用域修饰符,名称首字母大小写会决定
其的作用域
3、const数值在定义时如果没有被指定类型,则在使用的时候可以被作为任意类型来使用
代码示例:
5、枚举定义
枚举类直接使用常量定义的方式进行定义
代码示例:
代码示例:
iota是golang语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
使用iota能简化定义,在定义枚举时很有用。
代码示例:
注意:
iota只能在常量的表达式中使用。
每次 const 出现时,都会让 iota 初始化为0
6、条件语句
Go 语言提供了以下几种条件判断语句:
1、if语句:if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
Go 编程语言中 if 语句的语法如下:
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
}
2、if…else 语句: if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
3、if 嵌套语句:你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
if 布尔表达式 1 {
/* 在布尔表达式 1 为 true 时执行 */
if 布尔表达式 2 {
/* 在布尔表达式 2 为 true 时执行 */
}
}
代码示例:
注意:go语言中的if后的条件表达式不需要添加括号
4、switch 语句:switch 语句用于基于不同条件执行不同动作。
switch var1 {
case val1:
...
case val2:
...
default:
...
}
代码示例:
注意:go语言的switch不需要加break
7、循环语句
Go 语言的 For 循环有 3 种形式
1、
for init; condition; post { }
这和其他语言的for循环一样
2、
for condition { }
这和其他语言 的 while 一样
3、
for { }
这和其他语言的 for(;;)一样
代码示例
注意:
1、for的条件里不需要括号
2、for的条件里可以省略初始条件、结束条件、递增表达式
利用这个特性你可以很快地建立一个死循环
代码示例:
8、函数
函数是基本的代码块,用于执行一个任务。
Go 语言最少有个 main() 函数。
Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。
Go 语言函数定义格式如下:
func function_name( [parameter list] ) [return_types] {
函数体
}
这里值得一提的是,go语言的函数可以一次性返回多个值,这是很有意思的一点,以前使用Java的时候要返回多个值还需要使用封装或者集合或者引用,但是在go语当中这一点可以做的很方便
代码示例:
此外,go语言函数还支持可变参数列表
代码示例: