GO语言上手-基础语言 | 青训营笔记

97 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

1. Go语言程序元素

Go语言程序包含5种符号,分别是

  • 标识符(identifier)
  • 关键字(keyword)
  • 运算符(operator)
  • 分隔符(delimiter)
  • 字面量(literal) 它们是组成Go语言代码和程序的最基本单位,这5种符号共同组成各种表达式和语句。

2. Go语言基本概念

2.1 常量

在Go语言中,常量是指编译期间就已知,且在执行过程中不会改变的固定值。常量使用关键字const来定义,定义格式为:const identifier [type] = value,例如

const PI =3.1415926536
const PI float32 = 3.1415926536
const Return = true
const hello = "你好,Go语言"
const 人数 = 100

[type]可以省略,因为Go的编译器会自动判断值的类型。

2.2 变量

2.2.1 变量的声明

Go语言中,变量名的声明格式是:var identifier type。Go语言与其他大部分语言不一样的地方在于,它在声明变量的时候将变量的类型放在变量的名称后面,防止像C语言一样出现歧义的声明情况。

var a int 
var(a,b int 
    c bool 
    str string
)
var a,b,c int
var a,b,c int = 1,2,3

另外,如果想要交换两个变量的值,还可以使用a,b = b,a的语句。

上面的声明方式也叫静态声明,除此之外还有动态声明方式,与声明常量一样,例如

var a,b,c = "string",true,1

在这种定义声明下,Go的编译器会自动推断变量的类型,这也是Go语言的一个强大便捷之处。

2.2.2 局部变量声明

变量的声明有两种写法,上面是一种,还有一种是局部变量的写法,用:=赋值运算符号代替,例如

a := 1 // 等同于var a = 1

注意! 它只能用在函数体内,不可以用于全局变量的声明与赋值.

使用 :=可以快速创建一个函数内部的变量,它包括初始化声明与赋值两大部分。注意以下几点:

  • 同一个代码块内不能多次声明同一个变量。
  • 函数内部可以使用全局定义的变量,意思是给变量赋予一个新的值。
  • 函数体内属于独立代码块,可以再次声明变量a,还能改变变量的类型,并且定义只在函数内部生效。
  • 如果在定义变量之前就调用该变量,那么会编译错误,返回undefined:a。
  • 全局定义不限制位置,但建议统一放在函数代码前面。

当变量被声明但没有被赋值,它的值就是指定类型的零值,例如int为0,float为0.0,bool为false,string为空字符串,指针为nil。如果变量甚至没有指定类型,那么系统默认为int,值为0。

2.2.3 匿名变量

局部变量的特点:定义了就必须得使用(全局变量允许声明但不使用),不然就会编译报错。但是在使用强类型语言编程时,常常会出现在调用函数时,返回多个值,其中只有一个值是需要的情况,这个时候就需要使用匿名变量,那就是空标识符,例如_=a,这样就不会报错了,这种写法可以忽略一些多返回值的函数的部分返回值。

2.2.4 init函数

Go语言中,除了可以在全局变量中初始化实体,还可以在init函数中初始化。init函数是一个特殊的函数,他会在包完成初始化后自动执行,执行优先级比main函数高,并且不能手动调用。