go
不知为MUJI
站在树上的鸟从不害怕树枝断裂,因为它相信的不是树,而是翅膀。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【go】json编解码
1.json包接口func Marshal(v interface{}) ([]byte, error) // 编码func Unmarshal(data []byte, v interface{}) error // 解码1.1 对应关系 Json Go 解释 对象 结构体struct {} => struct 数组 ...原创 2020-10-09 19:55:11 · 759 阅读 · 0 评论 -
【go】context上下文
Why很多rpc框架中接口函数第一个参数统一是ctx context.Context接口,为什么要这么设计?因为一般一个网络请求Request,会在多个Goroutine中处理,而这些Goroutine可能需要共享Request的一些信息;同时当Request被取消或者超时的时候,所有从这个Request创建的所有Goroutine也应该被结束。上下文则几乎已经成为传递与请求同生存周期变量的标准方法。Whatcontext用于Goroutine之间共享状态变量,另一个gorutine原创 2020-06-23 16:32:16 · 422 阅读 · 0 评论 -
【go】常用工具包&框架
1.数据库dao几乎所有的系统都需要数据库操作,在Java中数据库操作的类库和框架包含驱动包driver、连接池包如druid、ORM框架如Mybatis,那go里对标的有哪些呢?Java go包 功能 java.sql.* database/sql 内置 标准接口Driver 具体功能委托各个驱动实现 mysql-connector-java github.com/go-sql-driver/mysql 各个数据库驱动.原创 2020-05-28 14:14:33 · 1042 阅读 · 0 评论 -
【go】反射机制reflect
前言反射机制是运行时更新变量和检查它们的值、调用它们的方法和它们支持的内在操作,而不需要在编译时就知道这些变量的具体类型。跟Java一样,go也提供了反射功能。其实之前就已经用过反射机制,如下语句输出变量的动态类型,底层就是用的reflect包实现的。fmt.Printf("%T\n", i)所有变量都可以由interface{}变量引用,很多函数或方法参数就是interface{},在函数内部通常需要获取interface{} x接口值的类型,通过判断其类型执行不同的处理逻辑。go接口文原创 2020-05-27 16:20:25 · 491 阅读 · 0 评论 -
【go】测试go test
前言很多语言都有测试工具,如Java的JUnit测试框架的自动化测试,也就是写一些小的程序用来检测产品代码的行为和预期一致,设计执行某些特定的功能case或者是通过随机输入验证边界。Go的测试技术相对低级,依赖go test命令和一系列测试函数规范(convention)。这种相对轻量级的机制高效,且易扩展到基准测试和示例文档。1.go test每个包都可以有其测试代码,go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数,生成一个临时的main包用于调用相应的测试函原创 2020-05-26 20:14:40 · 1188 阅读 · 1 评论 -
【go】gopl学习笔记(7.包管理)
前言Go语言有超过100个的标准包,可以通过以下命令获取标准包go list std 也可以通过http://godoc.org检索包。模块化设计成每个包可以被其它的不同项目共享和重用,在项目范围内统一的分发和复用。每个包一般都定义了一个不同的名字空间,防止命名冲突。还通过控制包内名字的可见性和是否导出来实现封装性,还可以强制用户通过某些特定函数来访问和更新内部变量,这样可以保证内部变量的一致性和并发时的互斥约束。当我们修改了一个源文件,我们必须重新编译该源文件对应的包和所有依赖该包的原创 2020-05-25 20:58:13 · 383 阅读 · 0 评论 -
【go】gopl学习笔记(6.基于共享变量的并发)
前言并发:在有多个goroutine的程序中,每一个goroutine内的语句也是按照既定的顺序去执行的,但是一般情况下我们没法去知道分别位于两个goroutine的事件x和y的执行顺序。当我们不能确认一个事件x是在另一个事件y的前或者后发生的话,就说明x和y这两个事件是并发的。并发安全:一个函数在线性程序中可以正确地工作,如果在并发的情况下,依然可以正确地工作的话,那么我们就说这个函数是并发安全的,并发安全的函数不需要额外的同步工作。对于某个类型来说,如果其所有可访问的方法和操作都是并发安全的话,原创 2020-05-25 20:07:11 · 385 阅读 · 0 评论 -
【go】gopl学习笔记(5.goroutine & channel)
前言应用程序通常需要图形化界面异步执行一部分代码,以提升交互体验 需要并发地执行以提升效率 服务端并发处理连接,提升响应速度和qps这些功能都是通过并发实现地,在Go语言中,每一个并发的执行单元叫作一个goroutine,可以暂时理解为Java地线程Thread。语法非常简单,就是在调用需要异步执行的方法前加上go关键字:f() // call f(); 同步调用,等待返回go f() // 创建 goroutine调用f(); 不等待结果,当前goroutine继续执行下面地代原创 2020-05-25 16:03:13 · 437 阅读 · 0 评论 -
【go】gopl学习笔记(4.接口)
前言我们都知道OOP有两个方式,组合和继承来组织类,分别表示has-a关系和is-a关系,能够实现代码复用、提升扩展性和灵活性。前面一篇讲方法method阐述了go通过结构体struct嵌套实现对象的扩展(相对于Java类的组合,has a关系),outer结构体会自动生成包装方法委托给inner嵌套结构的方法,这样实现了方法代码的复用。这样有了组合has-a关系,go里面的is-a关系是怎么实现的呢?下面我们来看看接口interface~1.接口-合约类似于Java中的接口,接口是一系列通原创 2020-05-20 18:17:03 · 434 阅读 · 0 评论 -
【go】gopl学习笔记(3.方法method)
前言从之前的特性看下来,很难相信go竟然也是一个面向对象的语言,本篇来see see它的OOP特性,封装和组合体现在哪里~1.方法声明OOP的对象通常包含数据和行为,type定义的类型可以包含数据,其行为怎么表示呢?go是通过方法实现的。go中的method方法与function函数非常类似,区别在于在函数名之前,方法携带了额外的参数(通常是所属类型type e.g. Point),这个参数将这个方法归属于这个参数的类型(表示是这个类型)。如下例,同样的距离方法,函数实现是两个点都在参数列表原创 2020-05-18 21:13:30 · 396 阅读 · 0 评论 -
【go】gopl学习笔记(2.函数)
1.函数如下函数使用func标识,包含函数签名和函数体。func name(parameter-list) (result-list) {body}func hypot(x, y float64) float64 {return math.Sqrt(x*x + y*y)}1.1 函数声明函数包含签名和函数体,函数体很好理解,就是语句的集合签名包含func、函数名、参数列表、返回值,与其它语言类似,比较明显的区别有两个参数列表的参数名、参数类型的声明顺序,且相同类型可以简写原创 2020-05-17 14:42:36 · 610 阅读 · 0 评论 -
【go】gopl学习笔记(1.语言基础)
为了加快阅读gopl(The Go Programming Language)书效率,决定输出笔记以督促自己,的疑问与解答ch2 程序结构2.7 scopescope作用域 分了原创 2020-05-15 19:44:53 · 1378 阅读 · 0 评论
分享