Go语言成长之路(一)-Go语言基础语法(多图文示例)

Go语言成长之路(一)Go语言基础语法

  • 1、变量定义
  • 2、内建变量类型
  • 3、指针定义
  • 4、常量定义
  • 5、枚举定义
  • 6、条件语句
  • 7、循环语句
  • 8、函数

1、变量定义

Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
声明变量的一般形式是使用 var 关键字:

var identifier type

可以一次声明多个变量:

var identifier1, identifier2 type

go语言与其他语言不同的是,go语言是变量在前,类型在后
我们在定义变量的时候是先想到变量的类型还是变量的名称?
我想一般是变量的名称,这也是这种变量声明这样设计的原因之一

变量声明举例如下图所示
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第1张图片
如图所示,但是为什么这个时候变量名下方标红了呢?
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第2张图片
根据编译器的提示,是因为这个声明的变量没有被用到
go语言在这方面非常严谨,声明的变量一定要被用到,要不然就无法通过编译
没有用到的变量就不要声明,这种做法也可以降低我们的代码维护成本

当我们打印这两个未赋值的变量的时候,不会出现异常,因为go语言已经给他们设置了初值
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第3张图片
如图所示,a的初值为0,b的初值是空字符串

go语言定义变量在赋初值的情况可以不用声明变量类型,编译器会自动识别,自动决定类型
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第4张图片
如上图所示, 每种变量在赋初值之后都可以在不指定变量类型的情况下正常使用

除此之外,还可以使用如下方式,一次性定义所有变量
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第5张图片

除了使用var关键字定义变量之外,我们还可以使用 := 的方式来定义
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第6张图片
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第7张图片
但是需要注意,这种不用var关键词的定义方式只能在函数内部使用

2、内建变量类型

go语言提供丰富的内建变量类型

参考

菜鸟教程-go语言内建变量类型

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、访问指针变量中指向地址的值。

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第8张图片

4、常量定义

常量定义,和其他语言差不多,都是使用const来进行定义
声明变量的一般形式是使用 var 关键字:

const identifier type

可以一次声明多个变量:

const identifier1, identifier2 type

也可以进行一次性定义,例如:

const(
	hello string = "hello"
	world string = "world"
)

注意
1、常量被定义后可以不使用,但是定义时必须被赋值

2、在使用Java语言的时候,按照规范,常量名必须全部大写,但是在go语言当中不能按照这种规范
这是由于go语言并没有作用域修饰符,名称首字母大小写会决定

其的作用域

3、const数值在定义时如果没有被指定类型,则在使用的时候可以被作为任意类型来使用

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第9张图片
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第10张图片

5、枚举定义

枚举类直接使用常量定义的方式进行定义

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第11张图片
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第12张图片

iota是golang语言的常量计数器,只能在常量的表达式中使用。

iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

使用iota能简化定义,在定义枚举时很有用。

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第13张图片

注意:
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语言成长之路(一)-Go语言基础语法(多图文示例)_第14张图片
注意:go语言中的if后的条件表达式不需要添加括号

4、switch 语句:switch 语句用于基于不同条件执行不同动作。

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第15张图片
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第16张图片
注意:go语言的switch不需要加break

7、循环语句

Go 语言的 For 循环有 3 种形式
1、

for init; condition; post { }

这和其他语言的for循环一样

2、

for condition { }

这和其他语言 的 while 一样

3、

for { }

这和其他语言的 for(;;)一样

代码示例
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第17张图片
注意:
1、for的条件里不需要括号
2、for的条件里可以省略初始条件、结束条件、递增表达式

利用这个特性你可以很快地建立一个死循环

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第18张图片

8、函数

函数是基本的代码块,用于执行一个任务。
Go 语言最少有个 main() 函数。
Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数组,则返回数组中包含的元素个数。

Go 语言函数定义格式如下:

func function_name( [parameter list] ) [return_types] {
   函数体
}

这里值得一提的是,go语言的函数可以一次性返回多个值,这是很有意思的一点,以前使用Java的时候要返回多个值还需要使用封装或者集合或者引用,但是在go语当中这一点可以做的很方便

代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第19张图片

此外,go语言函数还支持可变参数列表
代码示例:
Go语言成长之路(一)-Go语言基础语法(多图文示例)_第20张图片

你可能感兴趣的:(Go语言学习与工作实践,火星人学习笔记,golang,开发语言,后端,go,go语言)