Python进阶:切片的误区与高级用法

众所周知,我们可以通过索引值(或称下标)来查找序列类型(如字符串、列表、元组...)中的单个元素,那么,如果要获取一个索引区间的元素该怎么办呢? 切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。通常来说,切片的作用就是截取序列对象,然而,它还有一些使用误区与高级用法,都值得我们注意。所以,本文将主要跟大家一起来探讨这些内容,希望你能学有所获。 事先声明,切片并非列表的专属操作,但因为列表最具有代表性,所以,本文仅以列表为例作探讨。 1、切片的基础...阅读全文

2018-12-23 22:34:43 豌豆花下猫
阅读:1173 评论:0

Golang type 类型别名和类型定义

Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义,是不是熟悉的C语言(define和typedef)味道? 类型定义 type Student struct { name String age int } type I int 类型别名 type Sdt = Student type I = int 他们之间有什么区别呢?区别就是类型定义是完全定义了一种新的类型,而类型别名只是给现有的类型取了一个别名alias type I int type D...阅读全文

阅读:3641 评论:1

一起弄明白go的依赖管理 Go Modues/ GOPATH

一起弄明白go的依赖管理 Go Modues/ GOPATH 不要吝啬你的批评与感悟,敬请留言,我们一起进步。 如果你有过以下问题,欢迎阅读文章,提出意见与建议 go mod 怎么使用?GOPATH是什么?GO111MODULE="" 这个参数决定了什么?go get、go download 有什么区别?import到底import的什么东西? 依赖管理工具 用过Java 的同学都知道,对依赖的管理经历了从原始的手动引入jar包,到使用maven等自动化管理工具去引入第三方依赖的过程,从而可以使...阅读全文

阅读:3148 评论:1

[Go] context.Context 解析

## 结论 context 的意义就是在函数之间的调用过程中维护一个统一的 “上下文”。在 “上下文” 中使用保存 “状态” 的方式共享信息。 所谓的超时取消等 “功能” 也属于 “状态” 的一种。 且 context.Context ”碰巧“ 拥有了并发安全性。所以才会被广泛地应用到各种函数和方法中。 可以从几个方面来说明这个问题。 ### 状态共享 用一个例子来说明状态共享的意义: fn1 创建了 int 类型的 "状态" `i` 并将其传递了下去。...阅读全文

阅读:906 评论:0

对一段有关Go Code Block和变量作用域的代码的简要分析

近期,Go team的David CrawShaw在twitter上贴出了一段代码,如下: func main() { if a := 1; false { } else if b := 2; false { } else if c := 3; false { } else { println(a, b, c) } } David CrawShaw想表达的意图是gopher们很少在”else if”后面的simple statement中使用“短变量声明”形式,而这段代码是个例外。我们看到b、c...阅读全文

阅读:3094 评论:2

【1-5 Golang】Go语言快速入门—结构体与接口

  Go语言支持面向对象编程,但是又和传统的面向对象语言如C++,Java等略有不同:Go语言没有类class的概念,只有结构体strcut,其可以拥有属性,可以拥有方法,我们可以通过结构体实现面向对象编程。Go语言也有接口interface的概念,其定义一组方法集合,结构体只要实现接口的所有方法,就认为其实现了该接口,结构体类型变量就能赋值给接口类型变量,这相当于面向对象中的多态。另外,Go语言也可以有继承的概念,不过是通过结构体的"组合"实现的。 ## 结构体 ...阅读全文

阅读:2121 评论:2