写点什么

Practical Go(上)

2019 年 9 月 05 日

Practical Go(上)

QCon上海2018大会上,David Cheney 讲师做了《Practical Go(上)》主题演讲,主要内容如下。


演讲简介


Go is a language designed for engineering teams. It’s central themes are simplicity, readability, and maintainability. This talk will provide best practice real world advice for teams building projects in Go covering five areas; idiomatic code, package and api design, error handling, concurrency, and testing.


内容大纲

Identifiers


  1. Choose identifiers for clarity, not brevity

  2. Use a consistent declaraton style


Package Design


  1. A good package starts with its name An identifier’s name includes its package name Prefer lower case package names and import paths

  2. Rather than nesting deeply, return early

  3. Make the zero value useful

  4. Eschew package level state. No package level variables. Avoid global side effects.


Project Structure


  1. Consider fewer, larger packages Arrange code into files by import statements. Prefer nouns for file names. Eschew elaborate package hierarchies, resist the desire to apply taxonomy

  2. Keep package main small as small as possible


API Design


  1. Design APIs that are hard to misuse. Design APIs for their default use case.

  2. Prefer var args to []T parameters

  3. Let callers define the interface they require

  4. Prefer streaming interfaces

  5. Use type assertions for optional behaviour


Error handling


  1. Elminate handling by eliminating errors

  2. Only handle an error once


Concurrency


  1. Never start a goroutine without when it will stop. When sending or receiving on a channel, consider what happens if the other party never receives the message

  2. Keep yourself busy while waiting for a goroutine. or, do the work yourself.

  3. Leave concurrency to the caller


讲师介绍


David Cheney


Heptio 资深工程师, 著名 Go 语言专家


David 是 Heptio 的资深工程师。Heptio 位于西雅图,致力于帮助开发者高效使用 Kubernetes。


David 是开源贡献者,Go 编程语言项目组成员。他经常在技术社区演讲,分享软件设计、性能和 Go 语言相关主题。


在加入 Heptio 之前,他曾在 Atlassian、Canonical 和澳大利亚政府任职,从事云基础设施相关的开发和运维工作。












完整演讲 PPT 下载链接


https://qcon.infoq.cn/2018/shanghai/schedule


2019 年 9 月 05 日 16:382423

评论

发布
暂无评论
发现更多内容

『C++』我想学C++,C++太难了,那我想入门,给我10分钟我带你入门

风骨散人

图论--网络流最大流问题

风骨散人

第八章作业 - 用户路径

Au revoir

Flutter 中与平台相关的生命周期

老孟Flutter

flutter

文档是给未来自己的珍贵礼物

steve_lee

文档

互联网HR黑话指南

硬核编程

数据分析(第八章作业)

大小姐

作业 - 第九周

eva

JavaEE知识体系梳理

空城机

Java Java介绍 Java EE 大学作业

双非渣硕的我是如何拿到字节跳动研发岗SP

拓跋阿秀

c++ 字节跳动 互联网 计算机 校园招聘

产品 0 期 - 第九周作业

vipyinzhiwei

计算机组成原理--主存储器

风骨散人

再推荐一款小众且好用的 Python 爬虫库 - MechanicalSoup

星安果

Python 自动化 爬虫 MechanicalSoup 小众

推荐几本 Go 相关书籍

roseduan

go 书籍推荐 Go Concurrency Patterns Go web 书籍

ARTS-Week-0

绝影

ARTS 打卡计划 ARTS活动

Python救救我!如何连接串口实现一个报警灯报警器

ucsheep

Python websocket 串口 报警器 报警灯

操作系统--死锁避免(银行家算法)

风骨散人

银行家算法

[老孟Flutter] Stateful 组件的生命周期

老孟Flutter

flutter

『计算机组成原理』 计算机系统概述(考研、面试必备)

风骨散人

【Axure9百例NO.46】中继器多条件判断的优雅处理

zhuchuanming

原型设计 Axure 交互原型

如何判断自己是否适合当前公司?

石云升

离职 28天写作 职场经验 3月日更

6年时间,从实习生到阿里巴巴的P7,这就是我这个三本生的进阶之路

神奇小汤圆

Java 编程 程序员 架构 面试

『Python爬虫』Python实现刷B站、爱奇艺等视频网站播放量(Python教学文章)

风骨散人

Python 爬虫

华为与开发者的“情谊”,在HDC.Cloud 2021上书写智能时代新篇

脑极体

墨迹天气成长中心页用户路径分析(模拟)

🙈🙈🙈

极客大学产品经理训练营

软件工程是否可以指导小团队的建设

风翱

软件工程 3月日更

第八章作业

流浪猫

能进BAT、TMD的C++学习过程大分享

拓跋阿秀

c++ 字节跳动 计算机 BATJMD

一份百投百中的计算机校招简历是如何迭代足足26版的?

拓跋阿秀

c++ 字节跳动 计算机 简历 校招

产品经理训练营 - 第八章作业

joelhy

产品经理训练营

如何提高Flutter应用程序的性能

老孟Flutter

flutter

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

Practical Go(上)-InfoQ