GO语言学习知识梳理

85 阅读3分钟

GO语言学习知识梳理

go具有高性能高并发,语法简单学习曲线平缓的特点,丰富的标准库,完善的工具链,静态链接,快速编译等优点。

基础语法:

1. var

var a = "initial"  字符串

var b, c int = 1, 2    intvar d = true   布尔

var e float64  double值
    a:=3 给a赋值

2. for

for 起始值,终止条件,数值处理{代码}

  • continue 继续循环
  • break 跳出循环
  • 如果没有相关条件,会成为死循环,一直进行
  • goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用,可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句,以免造成程序流程混乱。
    示例代码如下:
var a int = 0
LOOP: for a<5 {
	if a == 2 {
		a = a+1
		goto LOOP
	}
	fmt.Printf("%d\n", a)
	a++
}

3.if

  • if布尔表达式{语句}

可以在条件判断之前,进行变量赋值,例: if num := 9; num < 0 {}

  • if-else语句

if 布尔表达式 { /* 在布尔表达式为 true 时执行 /} else { / 在布尔表达式为 false 时执行 */}

4.switch

其中的变量v可以是任何类型,val1val2可以是同类型的任意值,类型不局限为常量或者整数,或者最终结果为相同类型的表达式 列:

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

5. 数组

和c语言相同,Go语言也提供了数组类型的数据结构,数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。

  • 声明数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式:var variable_name [SIZE] variable_type

  • 初始化数组

直接进行初始化:var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

通过字面量在声明数组的同时快速初始化数组:balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

数组长度不确定,编译器通过元素个数自行推断数组长度,在[ ]中填入...,举例如下:var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}和balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

数组长度确定,指定下标进行部分初始化:balanced := [5]float32(1:2.0, 3:7.0)

  • 数组名意义

在c语言中我们知道数组名在本质上是数组中第一个元素的地址,而在go语言中,数组名仅仅表示整个数组,是一个完整的值,一个数组变量即是表示整个数组。

5. 结构体

在结构体中就可以定义多个不同的数据类型,在声明结构体之前我们首先需要定义一个结构体类型,这需要使用type和struct,type用于设定结构体的名称,struct用于定义一个新的数据类型。

type struct_variable_type struct {
   member definition
   member definition
   ...
   member definition
}

如果要访问结构体成员,需要使用点号 . 操作符,格式为:结构体变量名.成员名