golang基础:go语言基础语法和基本数据结构|青训营笔记

145 阅读4分钟

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

一、变量

1.1 什么是变量

变量是为存储特定类型的值而提供给内存位置的名称。在go中声明变量有多种语法。 所以变量的本质就是一小块内存,用于存储数据,在程序运行过程中数值可以改变

1.2 声明变量

var名称类型是声明单个变量的语法。

以字母或下划线开头,由一个或多个字母、数字、下划线组成 声明一个变量

第一种,指定变量类型,声明后若不赋值,使用默认值

var name type
name = value

第二种,根据值自行判定变量类型(类型推断Type inference) 如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。因此,如果变量具有初始值,则可以省略变量声明中的类型。

var name = value

第三种,省略var,注意:=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明)

name := value

1.3 注意事项

如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,例如a := 20就是不被允许的,编译器会提示错误nonew variables on left side of :=,但是a = 20是可以的,因为这是给相同的变量赋予一个新的值。

  • 变量必须先定义才能使用
  • go语言是静态强类型语言,要求变量的类型和赋值的类型必须一致。
  • 变量名不能冲突。(同一个作用于域内不能冲突)
  • 简短定义方式,左边的变量名至少有一个是新的
  • 简短定义方式,不能定义全局变量
  • 变量的零值。也叫默认值。
  • 变量定义了就要使用,否则无法通过编译。

二、常量

1.1 常量的声明

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

const ident [type] = value

显示类型定义 const b string = "abc"
隐式类型定义 const b = "abc"

一组常量中如果一常量没有初始值,那么值和上一行是一致的

注意事项

  • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
  • 不曾使用的常量,在编译的时候,是不会报错的
  • 显示指定类型的时候,必须确保常量左右值类型一致,需要时可做显示类型转换。这与变量就不一样了,变量是可以是不同的类型值

1.2 iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量 iota可以被用作枚举值

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

每当定义一个const,iota的初始值为0

每当定义一个常量,就会自动累加1

直到下一个const出现,清零

基本数据类型

1.基本数据类型

布尔类型
数值类型
字符串

2.复合数据类型

array 
slice 
map 
function 
pointer 
struct 
interface 
channel

1.1布尔类型

true和false两种

1.2 数值类型

1、整数型

int8

有符T8位整型(-128到127)长度:8bit

int16

有符号16位整型(-32768到32767)

int32

有符号32位整型(-2147483648到2147483647)

int64

有符号64位整型(-9223372036854775808到9223372036854775807)

uint8

无符号8位整型(0到255)8位都用于表示数值:

uint16

无符号16位整型(0到65535)

uint32

无符号32位整型(0到4294967295)

uint64

无符号64位整型(O到18446744073709551615)

2、浮点型

float32

IEEE-754 32位浮点型数

float64

IEEE-75464位浮点型数

1.3 字符串类型

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

var str string
str = "hello"