04 2023 档案
摘要:Runtime包 GOMAXPROCS() 用来设置可以并行计算的CPU核数最大值,并返回之前的值,具体使用方法上一篇有些,这里不再赘述 Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行 Goexi
阅读全文
摘要:协程 进程和线程 进程 当运行一个应用程序的时候,操作系统会为这个应用程序启动一个进程。可以将这个进程看作一个包含了应用程序在运行中需要用到和维护的各种资源的容器。这些资源包括但不限于内存地址空间、文件和设备的句柄以及线程 线程 一个线程是一个执行空间,这个空间会被操作系统调度来运行函数中所
阅读全文
摘要:泛型 问题解决 一个计算sum的函数 func sum(slice []int) int { var res int for _, value := range slice { res += value } return res } 如果需要提供对int,float64,string三种数据类型
阅读全文
摘要:异常处理 panic 异常处理 如果出现了panic异常,那么会停止当前函数的运行,然后会找recover()方法,如果没有的话,就会报错退出程序,如果有就会执行recover的方法体中的方法 我们可以使用defer延迟处理函数来捕获panic异常,用recover()来从错误场景中恢复,必
阅读全文
摘要:Defer 延迟处理函数 特点 1. defer的运行的时间实在函数体运行的最后,在return之前 1. 多个 defer 的执行顺序为“后进先出/先进后出” return 和defer 的关系 return的本质其实应该包含前后两个步骤:第一步是给返回值赋值(若为有名返回值则直接赋值,若为匿
阅读全文
摘要:匿名函数 闭包 匿名函数 顾名思义,就是没有名字的函数。。。 func(){ fmt.Println("我就是匿名函数") } 匿名函数的两种执行方法 将匿名函数赋给一个变量 定义后立即执行匿名函数 // 讲匿名函数赋给一个变量 tmp := func(){ fmt.Println("我是匿名函
阅读全文
摘要:使用第三方jar包,完成get/set操作 Lombok,结合特殊的注解,实现setter和getter的自动生成 导入jar包 使用插件Lombok 在类里import 即可使用 import lombok.AllArgsConstructor; import lombok.Data; impor
阅读全文
摘要:接口 接口类型是对其它类型行为的抽象和概括,因为接口类型不会和特定的实现细节绑定在一 起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力 接口的特点 可以包含0个或多个方法的签名 只定义方法的签名,不包含实现 实现接口不需要显式的声明,只需实现相应方法即可 接口实现 接口里没
阅读全文
摘要:结构体 结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员 结构体声明 type + 结构体名 + struct + {成员列表} :star:如果结构体成员名字是以大写字母开头的,那么该成员就是导出的。这是Go语言导出规则决 定的。一个结构体可能同时
阅读全文
摘要:Map 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的key 都是不同的,然后通过给定的key可以在常数时间复杂度内检索、更新或删除对应的value。 在Go语言中,一个map就是一个哈希表的引用,map类型可以写为map[K]V,其中K和V分别 对
阅读全文
摘要:多态 编译时的多态:方法重载 运行时的多态:动态绑定 多态的三大前提 类之间要有继承关系 要出现方法重写 父类的引用指向了子类的对象 测试样例 // 定义Person类 public class Person { public String name; public String sex; publ
阅读全文
摘要:切片 Go语言切片是一种建立在数组类型之上的抽象,它构建在数组之上并且提供更强大的能力和便捷。解决了数组长度不可变等缺陷 声明切片 切片的数据结构非常小,只有三个字段:指向底层数组的指针,切片长度,切片容量。切片长度是指切片的真实长度,切片容量是指切片的开始位置到底层数组的末尾的长度,一般来
阅读全文
摘要:数组 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列(这是一种同构的数据结构);这种类型可以是任意的原始类型例如整形、字符串或者自定义类型(结构体、接口)。数组长度也是数组类型的一部分,所以[5]int和[10]int是属于不同类型的。 :star::在其他语言中数组大多是引用类型,但
阅读全文
摘要:流程控制 选择结构(分支语句) 因为switch只能匹配固定值,推荐使用if-else做条件筛选 if-else判断 package main import "fmt" func main() { var tmpA int fmt.Scanln(&tmpA) if tmpA >= 90 { fm
阅读全文
摘要:go语言特点 天然支持高并发 语法简单,去掉很多臃肿的东西 优化的内存分配和垃圾处理 完善的标准库 go安装 下载:Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com) go version判断是否安装成功 配置环境变量GOROOT ,GOPATH go env
阅读全文