并发编程
并发编程1 goroutine 1.1 goroutine 的调度模型1.1.1 MPG 模式基本介绍1.1.2 MPG 模式运行的状态 11.13 MPG 模式运行的状态 21.2 goroutine 基本介绍1.2.1 进程和线程的说明:1.2.2 并发和并行1.2.3 Go 协程和 Go 主线程1.3 goroutine 快速入门1.3.1 …
go 接口与反射
接口与反射1 接口的使用1.1 定义1.2 声明1.2.1 结构体指针接收者实现接口1.2.2 结构体值接收者实现接口1.3 赋值1.3.1 短声明赋值案例1.3.2 注意接口只是一个方法行为的抽象1.3.3 接口类型之间的变量赋值1.4 接口继承1.5 类型断言1.5.1 类型断言后访问数据1.5.2 类型断言注意事项1.5.3 通过类型断言调用…
文件与 IO 操作
文件与 IO 操作1 文件读取&文件的写入1.1 文件的打开1.2 不带缓冲对文件的读取1.2.1 一次性读取全部内容1.3 创建文件和不带缓存写入内容操作1.3.4 通过命令行输入到文件中1.3.5 在程序中格式化输入内容到文件2 OpenFile 和 文件位置操作2.1 如果文件不存在就创建,并追加内容2.2 文件只读操作2.3 文件只…
4 自定义类型&结构体定义
4 自定义类型&结构体定义 结构体默认是值类型 结构体是自定义类型的一种,在学结构体之前我们需要了解一下自定义类型 面向对象三大思想: 封装:在 go 里面实现封装就是用的结构体,将一堆属性不同的数据放到一起 继承: 多态: 4.1 自定义类型 在 GO 里面是支持自定义类型的,语法如下: type TypeName struct ​ //…
错误+延迟执行+panic&recover
1 error 接口 Go 语言通过 error 接口实现错误处理的标准模式,通过使用函数返回值列表中的最后一个值返回错误信息,将错误的处理交由程序员主动进行处理 在程序中运行时错误错误一般分为两种: 可恢复的错误(重试/或忽略) 不可恢复的错误(程序退出) 范例代码: package main ​ import ( "fmt" "strconv"…
2 时间和空间复杂度分析
1.1 时间和空间复杂度分析 最常见的时间复杂度就是下面 7 种 O(1):常熟复杂度 O(log n):对数复杂度 O(n):线性时间复杂度 O(n^2):平方 O(n^3):立方 O(2^n):指数 O(n!):阶乘 我们怎么来看这个时间复杂度呢? 最常用的方式就是直接看这个函数,或者是说这段代码他根据 n 的不同情况他会运行多少次 如下图代码…
1 数据结构与算法总览
1 数据结构 数据结构主要分为三类 一维、二维、特殊 一维: 基础:数组 array(string),链表 linked list 高级:栈 stack,队列 queue ,双端队列 deque,集合 set,映射 map(hash or map),etc 栈:前进后出 队列:先进先出 二维: 二维数据结构都是从一维泛化而来的 基础:数 tree …
18.四数之和
18. 四数之和 难度中等 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含重复的四元组。   示例 1: 输入:nums = [1,0,-…
16. 最接近的三数之和(动态规划)(双指针)
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。   示例: 输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + …
# 函数类型+匿名函数+闭包
函数类型+匿名函数+闭包 函数也可以赋值给变量,存储在数组、切片、映射中,也可作为参数传递给函数或作为函数返回值进行返回 通过函数类型,我们也可以定义一些集合类型,比如切片的映射的 函数类型的意义: 函数类型可以把函数作为参数传递到其他的函数中 1 函数类型 函数类型:由参数的数量和他的类型,还有返回值的数量和类型组成 package main ​…