Go语言基础
Golang FundamentsGo语言基础 Golang Fundaments 中山大学 数据科学与计算学院 潘茂林 panml@mail.sysu.edu.cn 大纲 • Golang-设计哲学 • 基础知识学习 • Go语言的入门资源 • 本地项目工作空间组织 • 开始编程 Golang-设计哲学 我们需要什么样的语言 • 曾经 – 我们对包含大量代码的程序印象深刻。 – 我们努力在代码库中创建大型抽象。 这是一个有效的程序吗? – 是正确的吗? – 按时完成了吗? – 花了成本(时间、空间复杂度)? • 渴望成为质量、效率和简单的冠军。 • 有自己的观点。 • 重视反省和自我检讨。 Go语言应该是这样的 • 易于阅读代码 • 对遗存软件友好 • 心智模型 • 生产率与性能 • 正确性与性能 • 规则 • 方便代码评审 – 完整性 – 可读性 – 简单性 – 性能 – 微优化 实用主义的语言风格 – 面向编译器的静态类型语言 • 数据类型必须在编译阶段确定 • 语言能充分发挥编译优化技术 – 复古且简便的语言 • 集合了多种语言实用的语法表示 • 函数是一等公民(First-Class Functions) • 抛弃了面向对象 – 开放(几乎所有资源都在github上) • 语法基本特点 – C 语言的身体(语法基本类似C语言) – Python 语言的模样(部分语法如Python的编程效率)0 码力 | 21 页 | 851.30 KB | 1 年前3
Concurrency Patterns in C0 码力 | 20 页 | 1.35 MB | 6 月前3
2.2.3 Go语言的抢占式调度G:goroutine,⼀个计算任务。由需要执⾏的代码和其上下⽂组成,上下⽂ 包括:当前代码位置,栈顶、栈底地址,状态等。 M:machine,系统线程,执⾏实体,想要在 CPU 上执⾏代码,必须有线 程,与 C 语⾔中的线程相同,通过系统调⽤ clone 来创建。 P:processor,虚拟处理器,M 必须获得 P 才能执⾏代码,否则必须陷⼊休 眠(后台监控线程除外),你也可以将其理解为⼀种 token,有这个 id=5185%3A3&viewport=446%2C382%2C0.037524838000535965&scaling=contain 信号式抢占 https://www.figma.com/proto/JYM6TcdzBx7WtanhcJX0rP/bootstrap-Copy?page-id=5189%3A2&node- id=5189%3A12&viewport=-105%2C318%2C0.0478652827 com/proto/JYM6TcdzBx7WtanhcJX0rP/bootstrap-Copy?page-id=5187%3A0&node- id=5187%3A1&viewport=446%2C382%2C0.028840554878115654&scaling=contain markroot -> allgs[i] -> g -> suspendG(g) -> scan g stack ->0 码力 | 44 页 | 7.43 MB | 1 年前3
Go语言 - 一些简单的读书分享0 码力 | 16 页 | 9.09 MB | 1 年前3
用Go语言实现推送服务器用Go语言实现推送服务器 陈叶皓 chen.yh@ctrip.com 议程 • 推送服务器介绍 • Golang特点 • 推送服务架构 • 部分代码 • 上线效果 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 什么是推送服务器 • 推送业务信息到手机端 • 始终保持连接 推送服务器要求 • 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 无单点故障 Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 – 使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池0 码力 | 25 页 | 260.04 KB | 1 年前3
Go语言最差实践 - 李俱顺bigger the interface, the weaker the abstraction. ROB PIKE https://www.youtube.com/watch?v=PAAkCSZUG1c&t=317s It is more important for a module to have a simple interface than a simple implementation.0 码力 | 38 页 | 3.27 MB | 1 年前3
1.1 Go语言游戏项目应用情况汇报0 码力 | 21 页 | 1.63 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a目录 1 目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 为了更容易和更深刻地理解Go中的各种值 第18章:数组、切片和映射 - Go中的首要容器类型 第19章:字符串 第20章:函数 - 函数类型和函数值,以及变长参数个数函数 第21章:通道 - Go特色的并发同步方式 第22章:方法 第23章:接口 - 通过包裹不同具体类型的非接口值来实现反射和多态 第24章:类型内嵌 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例0 码力 | 591 页 | 21.40 MB | 1 年前3
共 110 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11













