Go语言基础总结 | 青训营笔记

88 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天

什么是Go语言

  • 高性能、高并发
  • 语法简单、学习曲线平缓
  • 丰富的标准库
  • 完善的工具链
  • 静态链接
  • 快速编译
  • 跨平台
  • GC

变量

声明

  • var name = value
  • name := value

常量

把变量的var改为const

没有确定的类型,会根据上下文去确定类型

if else判断语句

循环

没有while循环,只有唯一的for循环

在循环里面,可以用continue来继续循环,使用break跳出循环

switch

可以使用任意的变量类型

数组

切片

切片可以用make去切片数组

使用append在后面去追加切片元素

在使用append方法时,必须要将结果赋值回原切片,因为在追加时可能会触发自动扩容机制

可以使用copy(m, n)将切片n复制给切片m

map

使用make方法去创建map

使用delete(m, key)删除m里面指定的key

range

使用range可以更为快速的去遍历数组、切片、map类型的数据

遍历数组、切片时,第一个值返回的是索引,第二个值返回的是对应索引的值

遍历map时,第一个值返回的是key,第二个值返回的value

函数

指针

在golang中的指针的主要用途就是在函数中对传入的值可以进行修改

结构体

在golang中,结构体是带类型的字段的集合

在函数中传入指针能对结构体进行修改,还能够减少大的结构体传入时的开销

结构体方法

错误处理

一般可以通过函数里面设置多个返回值去处理错误

可以通过errors.New(value)返回错误的信息

字符串操作

可以使用golang中的strings库去处理字符串

strings.Contains(a, b) 判断字符串a里面是否包含字符串b

strings.Count(a, b)判断字符串a里面包含字符b多少个

strings.HasPrefix(a, b) 判断字符串a的前缀是否有b

strings.HasSuffix(a, b) 判断字符串a的后缀是否有b

strings.Index(a, b) 返回字符串a中b所在的索引位置

strings.Join([]string{"a", "b"}, x) 通过x将字符串a和字符串b拼接起来

strings.Repeat(a, number) 重复number次字符串a

strings.Replace(a, b, new_b, -1) 将字符串a中的用new_b替代

strings.Split(a, b) 将字符串a按照a中的b进行分割,返回一个字符串切片

strings.Tolower(a) 将字符串a全部小写

strings.Toupper(a) 将字符串a全部大写

格式化输出

对于输出,可以使用%v输出

%+v更详细

%#v更更详细

JSON处理

采用json.Marshal(a)对结构体a进行json序列化处理

使用json.Unmarshal(a)对序列化处理后的buf进行反序列化操作

时间处理

time.Now()获取当前时间

使用time.Date()去构建一个时间,并通过.Year() .Month() .Day() .Hour() .Minute()分别输出结果

使用time.Format("2006-01-02 15:04:05")去格式化一个时间

使用time.Parse("2006-01-02 15:04:05", m)去解析m

使用time.Unix()去生成一个时间戳

数字解析

strconv.ParseInt 字符串转成数字

strconv.ParseFloat 字符串转成浮点数

strconv.Atoi 字符串转成数字

strconv.Itoa 数字转成字符串