
Go
文章平均质量分 91
Go
天山老妖
多年私募基金量化IT工程师从业经验,专注于Linux/C++、Qt、Python、量化IT技术,具有丰富的中频、高频量化交易系统开发和实盘交易运维经验,熟悉CTP、盛立REM、易达YD、Xele期货柜台API,宽睿OES、华鑫Tora、中泰XTP股票柜台API。
QuantFabric开源:https://github.com/QuantFabric
展开
-
Hello Go(二十一)、GoMock测试框架
一、GoMock简介1、GoMock简介GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的testing包良好集成,也能用于其它的测试环境中。GoMock测试框架包含了GoMock包和mockgen工具两部分,其中GoMock包完成对桩对象生命周期的管理,mockgen工具用来生成interface对应的Mock类源文件。GoMock官网:GitHub - golang/mock: GoMock is a moc原创 2022-03-01 08:54:01 · 767 阅读 · 0 评论 -
Hello Go(二十)、GoStub测试框架
一、GoStub简介GoStub是一款轻量级的单元测试框架,接口友好,可以对全局变量、函数或过程进行打桩。GoStub安装:go get github.com/prashantv/gostub二、GoStub常用方法gostub用于在测试时打桩变量,一旦测试运行时,重置原来的值。type Stubs struct {// stubs is a map from the variable pointer (being stubbed) to the original val...原创 2022-03-01 08:53:41 · 392 阅读 · 0 评论 -
Hello Go(十九)、GoConvey测试框架
一、GoConvey简介1、GoConvey简介GoConvey是一款针对Golang的测试框架,可以管理和运行测试用例,同时提供了丰富的断言函数,并支持多种Web界面特性。官方地址:https://github.com/smartystreets/goconvey安装:goget github.com/smartystreets/goconvey2、GoConvey的特点GoConvey支持 go test,可直接在终端窗口和浏览器上使用。GoConvey特点如下:.原创 2022-03-01 08:53:32 · 673 阅读 · 0 评论 -
Hello Go(十八)、Go语言MySQL数据库操作
一、MySQL数据库驱动1、MySQL数据库驱动简介Go语言官方没有实现MySQL数据库驱动,常用的开源MySQL数据库驱动实现如下:(1)Go MySQL DriverGo MySQL Driver支持database/sql接口,全部采用Go语言实现。官方网站:https://github.com/go-sql-driver/mysql/(2)MyMySQLMyMySQL支持database/sql接口,也支持自定义的接口,全部采用Go语言实现。官方网站:http原创 2022-03-01 08:53:13 · 591 阅读 · 0 评论 -
Hello Go(十七)、Go语言database/sql接口
一、database/sql接口Go语言官方没有提供数据库驱动,而是为开发数据库驱动定义了标准接口database/sql,开发者可以根据database/sql接口来开发相应的数据库驱动,只要是按照标准接口database/sql开发的代码,以后需要迁移数据库时,不需要任何修改。二、database/sql常用接口1、sql.Registersql.Register函数用来注册数据库驱动,第三方开发者开发数据库驱动时,会在init函数内调用sql.Register完成本驱动的注册。f原创 2022-03-01 08:53:01 · 748 阅读 · 0 评论 -
Hello Go(十六)、Go语言常用标准库六
一、json1、json简介Go的标准包encoding/json对JSON的编解码提供了完整的支持。2、编码在编码过程中,json包会将Go的类型转换为JSON类型,转换规则如下:bool转换为JSON boolean浮点数, 整数, Number转换为:JSON numberstring转换为:JSON string数组、切片 转换为:JSON数组[]byte转换为:base64 stringstruct、map转换为:JSON objectfunc ...原创 2022-03-01 08:52:47 · 1007 阅读 · 0 评论 -
Hello Go(十五)、Go语言常用标准库五
一、md51、md5简介md5在crypto/md5包中,md5包提供了New和Sum方法。func New() hash.Hashfunc Sum(data []byte) [Size]bytehash.Hash继承了io.Writer,因此可以将其当成一个输入流进行内容的更新。type Writer interface {Write(p []byte) (n int, err error)}Write方法将p中的内容读入后存入到hash.Hash,最后在Sum方...原创 2022-03-01 08:52:20 · 788 阅读 · 0 评论 -
Hello Go(十四)、Go语言常用标准库四
一、heap1、heap简介heap仅仅提供了最小堆的操作,没有提供堆的数据结构,堆的数据结构必须由开发者自己实现。heap提供了一个heap.Interface接口来作为堆的操作和堆的数据结构(开发者自己实现)之间的桥梁,堆的数据结构必须满足此接口:type Interface interface {sort.InterfacePush(x interface{}) // add x as element Len()Pop() interface{} // rem...原创 2022-03-01 08:51:59 · 268 阅读 · 0 评论 -
Hello Go(十三)、Go语言常用标准库三
一、sync1、sync简介sync提供基本的同步原语,如sync.Mutex,sync.RWMutex,sync.Once,sync.Cond,sync.Waitgroup,除了Once和WaitGroup类型外,大多数类型都供低级库使用。Go语言中,不要通过共享内存通信,而要通过通信共享内存,通过Channel和沟通可以更好地完成更高级别的同步。type Locker interface {Lock()Unlock()}Locker提供了锁的两个操作方法,Lock、U...原创 2022-03-01 08:51:43 · 332 阅读 · 0 评论 -
Hello Go(十二)、Go语言常用标准库二
一、os1、os简介os 包提供了不依赖平台的操作系统函数接口,设计像Unix风格,但错误处理是go风格,当os包使用时,如果失败后返回错误类型而不是错误数量。2、os常用接口func Hostname() (name string, err error) // Hostname返回内核提供的主机名func Environ() []string // Environ返回表示环境变量的格式为”key=value”的字符串的切片拷贝func Getenv(key string) strin原创 2022-03-01 08:51:21 · 585 阅读 · 0 评论 -
Hello Go(十一)、Go语言常用标准库一
一、log1、log模块简介Go语言中log模块用于在程序中输出日志。log模块提供了三类日志输出接口,Print、Fatal和Panic。Print是普通输出;Fatal是在执行完Print后,执行 os.Exit(1);Panic是在执行完Print后调用panic()方法。log模块对每一类接口其提供了3中调用方式,分别是"Xxxx、 Xxxxln、Xxxxf"。2、log.Print接口log.Print类接口包括log.Print、log.Println、log.Printf,原创 2022-03-01 08:50:53 · 925 阅读 · 0 评论 -
Hello Go(十)、GoLand常用快捷键
一、Goland快捷键设置GoLand支持各种编辑器的快捷键映射:File->Settings->Keymap 二、GoLand常用快捷键1、查询快捷键 CTRL+N 查找类CTRL+SHIFT+N 查找文件CTRL+SHIFT+ALT+N 查找类中的方法或变量CTRL+B 快速打开光标处的类或方法CTRL+ALT+B 找所有的子类CTRL+SHIFT+B 找变量的类CTRL+G 定位行CTRL+F 在当前窗口查找文本CTRL+SHIF..原创 2022-03-01 08:50:16 · 1239 阅读 · 0 评论 -
Hello Go(九)、Go语言并发编程
一、goroutine简介1、并发与并行简介并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是原创 2022-02-28 00:08:46 · 408 阅读 · 0 评论 -
Hello Go(八)、Go语言程序测试与性能调优
一、Go语言自动化测试框架简介1、自动化测试框架简介go语言标准包的testing提供了单元测试(功能性测试)和性能测试(压力测试)常用方法的框架,可以非常方便地利用其进行自动化测试。go语言测试代码只需要放到以_test.go结尾的文件中即可。golang的测试分为单元测试和性能测试,单元测试的测试用例必须以Test开头,其后的函数名不能以小写字母开头;性能测试必须以Benchmark开头,其后的函数名不能以小写字母开头。为了测试方法和被测试方法的可读性,一般Test或Benchmark后..原创 2022-02-28 00:08:19 · 1004 阅读 · 0 评论 -
Hello Go(七)、Go语言错误处理
一、defer延迟函数1、defer延迟函数简介defer在声明时不会立即执行,而是在defer所在的函数return后,再按照FILO(先进后出)的原则依次执行每一个defer,一般用于异常处理、释放资源、清理数据、记录日志等。每次defer语句执行时,defer修饰函数的返回值和参数取值会照常进行计算和保存,但是defer修饰的函数不会执行。等到上一级函数返回前,会按照defer的声明顺序倒序执行全部defer的函数。defer所修饰函数的任何返回值都会被丢弃。如果一个defer所修饰函原创 2022-02-28 00:07:36 · 183 阅读 · 0 评论 -
Hello Go(六)、Go语言闭包
一、函数式编程1、函数式编程简介函数式编程是一种编程模型,将计算机运算看作是数学中函数的计算,并且避免了状态以及变量的概念。在面向对象思想产生前,函数式编程已经有数十年的历史。随着硬件性能的提升以及编译技术和虚拟机技术的改进,一些曾被性能问题所限制的动态语言开始受到关注,Python、Ruby和Lua等语言都开始在应用中崭露头角。动态语言因其方便快捷的开发方式成为很多人喜爱的编程语言,伴随动态语言的流行,函数式编程也开始流行。2、函数式编程的特点函数式编程的主要特点如下:A、变量的不原创 2022-02-28 00:07:01 · 231 阅读 · 0 评论 -
Hello Go(五)、Go语言面向接口
一、Duck Typing简介1、Duck Typing简介对于一门强类型的静态语言来说,要想通过运行时多态来隔离变化,多个实现类就必须属于同一类型体系,必须通过继承的方式与同一抽象类型建立is-a关系。而Duck TypingDuck TypingDuck Typing则是一种基于特征,而不是基于类型的多态方式。Duck TypingDuck TypingDuck Typing仍然关心is-a,只不过is-a关系是以对方是否具备相关的特征来确定的。是否满足is-a关系可以使用所谓的鸭子测试原创 2022-02-28 00:06:46 · 358 阅读 · 0 评论 -
Hello Go(四)、Go语言面向对象
一、结构体和方法1、结构体的定义在结构体中可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体定义需要使用type和struct语句。struct语句定义一个新的数据类型,结构体有中有一个或多个成员。type语句设定了结构体的名称。结构体的格式如下:type struct_variable_type struct {member definition;member definition;...member d...原创 2022-02-28 00:06:07 · 278 阅读 · 0 评论 -
Hello Go(三)、Go语言内置容器
一、Go语言数组1、Go语言数组简介Go语言提供了数组类型的数据结构。数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,类型可以是任意的原始类型例如整形、字符串或者自定义类型。相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。数组元素可以通过索引(位置)来读取(或者修改),索引从0开始,第一个元素索引为 0,第二个索引为 1,以此类原创 2022-02-28 00:05:47 · 261 阅读 · 0 评论 -
Hello Go(二)、Go语言基础
一、Go语言程序结构Go语言程序基本结构如下:A、包声明B、引入包C、函数D、变量E、语句 & 表达式F、注释package main //包声明import "fmt" //引入包func main(){ //main函数//打印Hello Worldfmt.Print("Hello World!")}二、Go语言基础语法1、Go语言标记Go语言程序由多个标记组成,可以是关键字、标识符、常量、字符串、符号。fmt.Print...原创 2022-02-28 00:05:21 · 485 阅读 · 0 评论 -
Hello Go(一)、Go语言简介
一、Go语言简介1、Go语言简介Go(golang)是Google开发的一种静态强类型、编译型、并发型并具有垃圾回收功能的编程语言。Go从2007年末由Robert Griesemer、Rob Pike、Ken Thompson(C语言发明者)主持开发,于2009年11月正式宣布成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后续增加了Windows平台的实现。2012年初,Go语言官方发布了Go 1.0稳定版本,目前Go语言基于1.x每半年发布一个版本。2、Go原创 2022-02-28 00:04:48 · 1198 阅读 · 0 评论