Go 基础

来源:互联网 时间:1970-01-01

标识符

由字母、下划线和数字组成,非数字开头。

注释

// 单行注释/* 我是多行注释 我是多行注释 */

行分隔符

一行代表一个语句结束,如果将多个语句写在同一行,则必须使用 分号;

关键字

数据类型

数字类型

整型 int 和浮点型 float,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。

 整型 int8 int16 int32 int64 uint8 uint16 uint32 uint64 浮点型 float32 float64 complex64 complex128 byte 类似 uint8 rune 类似 int32 uint 32 或 64 位 int 与 uint 一样大小 uintptr 无符号整型,用于存放一个指针

布尔型

布尔型的值只可以是常量 true 或者 false。

var b bool = true

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。

派生类型

包括:

(a) 指针类型(Pointer)(b) 数组类型(c) 结构化类型(struct)(d) 联合体类型 (union)(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型(i) Channel 类型 

变量

声明变量,声明后若不赋值,使用默认值

var identifier type

也可以根据值自行判定变量类型

var v_name = value

也要以省略var, 注意:=左侧的变量不应该是已经声明过的,否则会导致编译错误

v_name := value// 例如var a int = 10var b = 10c : = 10

多变量声明

// 只能用于非全局变量var vname1, vname2, vname3 = v1, v2, v3vname1, vname2, vname3 := v1, v2, v3// 只能用于全局变量var ( vname1 v_type1 vname2 v_type2)

常量

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

const identifier [type] = value

iota

iota 是一个特殊常量,可以认为是一个可以被编译器修改的常量。

在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

const ( a = iota b = iota c = iota)

第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2。

运算符

算术运算符

+-*/%++--

关系运算符

==!=><>=<=

逻辑运算符

&&||!

位运算符

&|^<<>>

赋值运算符

=+= -= *= /= %=<<=>>=&=^=|=

其他运算符

& 返回变量存储地址* 指针变量

条件语句

if elseswitchselect

循环语句

只有 for 循环。

函数

Go 语言最少有个 main() 函数。

数组

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。

声明数组

var variable_name [SIZE] variable_type

初始化数组

var 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}

指针

声明指针

var var_name *var-type

当一个指针被定义后没有分配到任何变量时,它的值为 nil,也称为空指针。

结构体

数组可以存储同一类型的数据,但在结构体中可以为不同项定义不同的数据类型。

定义结构体

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

切片

切片可以认为是长度可变的数组。

范围(Range)

range 关键字用于for循环中迭代数组(array)、切片(slice)、链表(channel)或集合(map)的元素。在数组和切片中它返回元素的索引值,在集合中返回 key-value 对的 key 值。

Map(集合)

Map 是一种无序的键值对的集合。

类型转换

type_name(expression)

接口

/* 定义接口 */type interface_name interface { method_name1 [return_type] method_name2 [return_type] method_name3 [return_type] ... method_namen [return_type]}

错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

error类型是一个接口类型,这是它的定义

type error interface { Error() string}

可以在编码中通过实现 error 接口类型来生成错误信息。




相关阅读:
Top