GO语言入门指南:基础语法 | 青训营

72 阅读3分钟

基础语法

变量

Go 语言变量名由字母、数字、下划线组成其中首个字符不能为数字

声明变量的形式一般使用var关键字,且类型在变量之后:

var identifier type

也可以申明多个变量:

var indentifier1, indentifier2 type

变量申明

变量声明第一种是为初始化的,变量默认为零:

var v_name v_type
v_name = value
  • 数值类型(包括complex64/128)为 0

  • 布尔类型为 false

  • 字符串为 "" (空字符串)

  • 以下几种类型为 nil

var a *int
var a []int
var a map[string] int
var a chan int
var a func(string) int
var a error // error 是接口

第二种是根据值自行判定数据类型的

var v_name = value

第三种是不需要var关键字声明,并且可以根据值自行判定数据类型

v_name := value

常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量。

常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

常量的定义格式:

const identifier [type] = value

你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。

  • 显式类型定义: const b string = "abc"

  • 隐式类型定义: const b = "abc"

结构体

Go语言中数组是同一类型数据的集合,但结构体可以是不同结构的集合,可以用来表示一个实体的所有属性

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合

其定义结构如下:

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

变量声明如下:

variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}

切片(Slice)

Go语言中切片是对数组的抽象

与数组不同的是,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。

切片的定义

var identifier []type
或
slice1 := make([]type, len)

切片初始化

s :=[] int {1,2,3 }

直接初始化切片,[] 表示是切片类型>

s := arr[:]

初始化切片 s,是数组 arr 的引用。

s := arr[startIndex:endIndex]

将 arr 中从下标 startIndex 到 endIndex-1 下的元素创建为一个新的切片。

其余部分的切片用法此处不再举例可自行查找菜鸟教程

切片的增加和复制调用append()和copy()函数即可

Map(集合)

Go语言Map的设计基于哈希表,Map 是一种无序的键值对的集合。

Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。

Map是一种集合,与上面的切片非常相似,不过,map是一种无序的集合,即返回的键值顺序是不确定的。

Map 是引用类型,如果将一个 Map 传递给一个函数或赋值给另一个变量,它们都指向同一个底层数据结构,因此对 Map 的修改会影响到所有引用它的变量。

定义 Map

可以使用内建函数 make 或使用 map 关键字来定义 Map:

/* 使用 make 函数 */
map_variable := make(map[KeyType]ValueType, initialCapacity)

map的遍历,删除,修改操作可查看菜鸟教程

此文章只本人对Go语言数据类型的个人总结,并不全面,希望对各位有所帮助。