Go 入门指南(The way to Go)解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 4.2 Go 程序的基本结构和要素 4.3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 select 切换协程 14.5 通道、超时和计时器(Ticker) 14.6 协程和恢复(recover) 14.7 新旧模型对比:任务和worker 14.8 惰性生成器的实现 14.9 实现 Futures 模式 第 15 章 网络,模板和网页应用 15.1 tcp服务器 15.2 一个简单的网页服务器 15.3 访问并读取页面 15.4 写一个简单的网页应用 书栈(BookStack.CN) 构建 致谢 当前文档 《Go入门指南》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-08。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果您在阅读文档 获取知识的0 码力 | 466 页 | 4.44 MB | 1 年前3
Go Web编程go get github.com/russross/blackfriday 这样读者就可以把相应的Markdown文件编译成html文件,执行go build build.go,执行生成的文件,就会在底目 录下生成相应的html文件 交流 交流 欢迎大家加入QQ群:259316004 《Go Web编程》专用交流群 大家有问题还可以上德问上一起交流学习:http://www.dewen ATH时,默认会将go get的内容放在第一个目录下 以上 $GOPATH 目录约定有三个子目录: src 存放源代码(比如:.go .c .h .s等) pkg 编译后生成的文件(比如:.a) bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中) 以后我所有的例子都是以mygo作为我的gopath目录 应用目录结构 应用目录结构 建立包和目录:$ Printf("Hello, world. Sqrt(2) = %v\n", mymath.Sqrt(2)) } 12 如何编译程序呢?进入该应用目录,然后执行`go build`,那么在该目录下面会生成一个mathapp的可执行文件 sh ./mathapp 输出如下内容 sh Hello, world. Sqrt(2) = 1.414213562373095 `` 如何安装该应用,进入该目录执0 码力 | 295 页 | 5.91 MB | 1 年前3
Go 入门指南(The way to Go)org/cmd/gofmt/。 3.6 生成代码文档 go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文 档。 它也可以作为一个提供在线文档浏览的 web 服务器,http://golang.org 就是通过这种形式实现的。 一般用法 go doc package 获取包的文档注释,例如: go doc fmt 会显示使用 godoc 生成的 fmt 包的 服务器。在命令行输入 godoc -http=:6060 ,然后使用浏览器打开 http://localhost:6060 后,你 就可以看到本地文档浏览服务器提供的页面。 godoc 也可以用于生成非标准库的 Go 源码文件的文档注释(第 9.6 章)。 如果想要获取更多有关 godoc 的信息,请访问该页面:http://golang.org/cmd/godoc/(在线版的第 三方包 godoc 等复杂的函数修改,工具则会给出文件名和代码行数的提示以便让开发人 员快速定位并升级代码。Go 开发团队一般也使用这个工具升级 Go 内置工具以及 谷歌内部项目的代 码。 go fix 之所以能够正常工作是因为 Go 在标准库就提供生成抽象语法树和通过抽象语法树对代码 进行还原的功能。该工具会尝试更新当前目录下的所有 Go 源文件,并在完成代码更新后在控制台输 出相关的文件名称。 go test 是一个轻量级的单元测试框架(第0 码力 | 380 页 | 2.97 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版展示效果受限,可访问 hello‑algo.com 网页版以获得更优的阅读体验。 致谢 本书在开源社区众多贡献者的共同努力下不断成长。感谢每一位投入时间与精力的撰稿人,他们 是(按照 GitHub 自动生成的顺序):krahets, sjinzh, justin‑tse, Reanon, nuomi1, Gonglja, S‑N‑O‑ R‑L‑A‑X, danielsss, hpstory, RiverTwilight // === File: worst_best_time_complexity.go === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ func randomNumbers(n int) []int { nums := make([]int, n) // 生成数组 nums = { 1, 2, 3, ..., n } for i := 0; i < n; break } } return } 4.1.4. 数组典型应用 数组是最基础的数据结构,在各类数据结构和算法中都有广泛应用。 ‧ 随机访问:如果我们想要随机抽取一些样本,那么可以用数组存储,并生成一个随机序列,根据索引实 现样本的随机抽取。 ‧ 排序和搜索:数组是排序和搜索算法最常用的数据结构。例如,快速排序、归并排序、二分查找等都需 要在数组上进行。 4. 数组与链表 hello‑algo0 码力 | 347 页 | 27.40 MB | 1 年前3
Go 2 Generics? A (P)reviewPolymorphism)根据实参类型生成不同的版本 ,支持任意数量的 调用。即泛型 func Add(a, b T) T{ return a+b } Add(1, 2) // 编译器生成 T = int 的 Add Add(float64(1.0), 2.0) // 编译器生成 T = float64 的 Add Add("1", "2") // 编译器生成 T = string return a 10 } 11 return b 12 } 关键设计 ● 通过 //go:generate 编译器指示来自动生成代码 ● 利用这一特性比较优秀的实现是 cheekybits/genny 评述 ● 维护成本 ● 需要重新生成代 码 ● 没有类型检查,需要程序员自行判断 2020 © Changkun Ou · Go 夜读 · Go 2 Generics? A 「泛型困境」其实是一个伪命题 ○ 牺牲运行时性能的做法显然不是我们所希望的 ● 不加以限制的泛型机制将 严重拖慢编译性能 ○ 什么时候才能决定一个泛型函数 应该编译多少份不同的版 本? ○ 不同的生成策略会遇到什么 问题? ● 加以限制的泛型机制将提高程序的可 读性 ○ 如何妥当的描述 对类型的限制? 泛型困境 [Russ Cox, 2009] C: void * C++: template0 码力 | 41 页 | 770.62 KB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、coderonion、Gonglja、nuomi1、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise、 linearLogRecur(n/2) + linearLogRecur(n/2) for i := 0; i < n; i++ { count++ } return count } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 www.hello‑algo.com 39 图 // === File: worst_best_time_complexity.go === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ func randomNumbers(n int) []int { nums := make([]int, n) // 生成数组 nums = { 1, 2, 3, ..., n } for i := 0; i < n;0 码力 | 384 页 | 18.49 MB | 10 月前3
Hello 算法 1.1.0 Go版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、Gonglja、nuomi1、codingonion、Reanon、justin‑tse、hpstory、 danielsss、curtishd、night‑cruise linearLogRecur(n/2) + linearLogRecur(n/2) for i := 0; i < n; i++ { count++ } return count } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 hello‑algo.com 39 图 2‑13 // === File: worst_best_time_complexity.go === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ func randomNumbers(n int) []int { nums := make([]int, n) // 生成数组 nums = { 1, 2, 3, ..., n } for i := 0; i < n;0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版hello‑algo.com 3 图 0‑1 本书主要内容 0.1.3 致谢 本书在开源社区众多贡献者的共同努力下不断完善。感谢每一位投入时间与精力的撰稿人,他们是(按照 GitHub 自动生成的顺序):krahets、codingonion、nuomi1、Gonglja、Reanon、justin‑tse、danielsss、 hpstory、S‑N‑O‑R‑L‑A‑X、night‑c linearLogRecur(n/2) + linearLogRecur(n/2) for i := 0.0; i < n; i++ { count++ } return count } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 hello‑algo.com 39 图 2‑13 // === File: worst_best_time_complexity.go === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ func randomNumbers(n int) []int { nums := make([]int, n) // 生成数组 nums = { 1, 2, 3, ..., n } for i := 0; i < n;0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.0.0b5 Golang版算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 致谢 本书在开源社区众多贡献者的共同努力下不断成长。感谢每一位投入时间与精力的撰稿人,他们是 (按照 GitHub 自动生成的顺序):krahets, justin‑tse, sjinzh, nuomi1, Reanon, Gonglja, S‑N‑O‑R‑ L‑A‑X, hpstory, danielsss, RiverTwilight linearLogRecur(n/2) + linearLogRecur(n/2) for i := 0.0; i < n; i++ { count++ } return count } 图 2‑13 展示了线性对数阶的生成方式。二叉树的每一层的操作总数都为 ? ,树共有 log2 ? + 1 层,因此时 间复杂度为 ?(? log ?) 。 第 2 章 复杂度分析 hello‑algo.com 37 图 2‑13 // === File: worst_best_time_complexity.go === /* 生成一个数组,元素为 { 1, 2, ..., n },顺序被打乱 */ func randomNumbers(n int) []int { nums := make([]int, n) // 生成数组 nums = { 1, 2, 3, ..., n } for i := 0; i < n;0 码力 | 379 页 | 30.70 MB | 1 年前3
3.云原生边云协同AI框架实践pkg/apis/your_app/v1aplpha1/your_api.go deepcopy-gen: 生成深度拷贝对象方法 client-gen: 为资源生成标准的操作方法 (get;list;watch;create;update;patch;delete) informer-gen: 生成informer,提供事件机制 (AddFunc,UpdateFunc,DeleteFunc)来响应 lister-gen: 为get和list方法提供只读缓存层 https://github.com/kubernetes/code-generator 根据定义的结构,利用code-generator生成对应 的operator代码 CR & CRD apiVersion: sedna.io/v1alpha1 kind: LifelongLearningJob metadata: name: pkg/globalmanager/controllers/manager.go/Start() 【3】启动GM进程。 - clientset.NewForConfig():【4】调用client-go生成了Sedna CRD client。 - NewUpstreamController():【5】创建UpstreamController,每个GM进程有 一个UpstreamController0 码力 | 37 页 | 2.36 MB | 1 年前3
共 43 条
- 1
- 2
- 3
- 4
- 5













