DiveintoGolang许式伟20107-192自我介绍七牛七牛云存储.PPT

DiveintoGolang许式伟20107-192自我介绍七牛七牛云存储.PPT

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DiveintoGolang许式伟20107-192自我介绍七牛七牛云存储

Dive into Golang @许式伟 2013-07-19 Golang 思维方式 最小心智负担原则 最小特性 最少惊异 最少犯错机会 Golang 思维方式 Go, Next Java? No, Next C! 少就是指数级的多 最少特性原则:如果一个功能不对解决任何问题有显著价值,那么就不提供 显式表达:所写即所得的语言 最对胃口的并行支持 类型系统的纲:interface 极度简化但完备的OOP struct 可以定义成员方法(method),这是Go对OOP支持的所有内容 简化的符号访问权限控制、显式的 this 指针 错误处理规范 函数多返回值、内置 error 类型、defer 功能内聚:例如,强大的组合能力 消除了堆与栈的边界消除了堆与栈的边界 最友善的 C 语言的支持 /go-next-c.pptx Golang 思维方式 Go, 基于连接与组合的语言 Pipeline 与并行模型 在 Go 中实施 Pipeline 非常容易 在 Go 中让任务并行化非常容易 连接 Go 组件的连接是松散耦合的。彼此之间有最自然的独立性 Go 组件间的协议由 interface 描述,并在编译期进行 check 组合 不支持继承,却胜过继承 不是 COM,但更胜 COM /thinking-in-go.mp4 Golang 思维方式 以软件工程为目的的语言设计 快速编译 严格的依赖管理 代码风格的强一致性 偏向组合而不是继承 /1701886454/ztwNC2uj1 今天讲什么? 不讲库 不通盘介绍Golang特性 打破砂锅问到底 选择Golang局部特性,挖深坑 Dive into Golang 切片 (slice) 接口 (interface) 闭包 (closure) 并行编程 (concurrency) 切片 (slice) 数据结构 Data *type Len int Cap int 直观含义:数组片段 指向数组的一个区间(range) [Data, Data+Len) 本质:动态数组 可动态扩容的数组(vector) 有 Cap 成员是明证 切片 (slice) 取数组片段 slice = array[from:to] slice = array[:to] slice = array[from:] slice = array[:] reslice slice2 = sliece[from:to] slice2 可以超出 slice 的范围,所以叫 reslice 而不是 subslice slice2 不能超出底层 array 的范围 取区间大小/容量 - len(slice) / cap(slice) 复制元素 - copy(dest, src) 返回复制的元素个数:min(len(dest), len(src)) 实际上如果 dest 是 []byte,那么 src 还可以是 string 追加元素 append(dest, val) append(dest, v1, v2, ..., vN) append(dest, src...) 切片 (slice) 示范代码 arr := [6]int{0, 1, 2, 3, 4, 5} slice := arr[1:3] slice2 := slice[1:3] 结果 slice.Data = arr[1] slice.Len = 3-1 = 2 slice.Cap = 6-1 = 5 slice = {1, 2} slice2.Data = slice.Data[1] = arr[2] slice2.Len = 3-1 = 2 slice2.Cap = slice.Cap-1 = 4 slice2 = {2, 3} 切片 (slice) Go 语言为数不多的陷阱之一 arr := []int{1, 2, 3, 4, 5} slice := arr[1:2] slice = append(slice, 6, 7, 8) fmt.Println(slice) fmt.Println(arr) 信条 不对函数slice类型的参数进行append 接口 (interface) 数据结构 Data *type Itbl *itbl 对比 C++ interface 数据结构 vptr *vtable 差异 Go 的 interface 是个值类型(可定义实例),里面含有 2 个指针;C++ 的 interface 不能定义实例,只能定义相应的指针类型,比如 IFoo* /qiniu/gobook/tree/master/chapter9/interface 接口 (interface) Go 接口样例 var foo IFoo = new(FooImpl) fo

您可能关注的文档

文档评论(0)

wumanduo11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档