2015年12月9日
摘要: 金融统计函数(一)BARSCOUNT(COND) 第一个有效周期到当前的周期数。注:1、返回值为COND从第一个有效周期开始计算,到现在为止的周期数。2、条件第一次成立的当根k线上BARSCOUNT(COND)的返回值为0例:BARSCOUNT(MA(C,4));//计算MA(C,4)第一次有返回值... 阅读全文
posted @ 2015-12-09 13:36 米加米加 阅读(1122) 评论(0) 推荐(0) 编辑
  2015年12月8日
摘要: 数组是Go语言编程中最常用的数据结构之一。顾名思义,数组就是指一系列同一类型数据的集合。数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数组的长度。以下为一些常规的数组声明方法:[32]byte // 长度为32的数组,每个元素为一个字节[2*N] struct {... 阅读全文
posted @ 2015-12-08 14:14 米加米加 阅读(201) 评论(0) 推荐(0) 编辑
  2015年12月7日
摘要: 在Go语言中,字符串也是一种基本类型。相比之下, C/C++语言中并不存在原生的字符串类型,通常使用字符数组来表示,并以字符指针来传递。Go语言中字符串的声明和初始化非常简单,举例如下:var str string // 声明一个字符串变量str = "Hello world" // 字符串赋值ch... 阅读全文
posted @ 2015-12-07 14:13 米加米加 阅读(165) 评论(0) 推荐(0) 编辑
  2015年12月6日
摘要: 复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示虚部(imag)。如果了解了数学上的复数是怎么回事,那么Go语言的复数就非常容易理解了。1. 复数表示复数表示的示例如下:var value1 complex64 value1 = 3.2 + 12i value2... 阅读全文
posted @ 2015-12-06 14:11 米加米加 阅读(498) 评论(0) 推荐(0) 编辑
  2015年12月5日
摘要: 浮点型用于表示包含小数点的数据,比如1.234就是一个浮点型数据。Go语言中的浮点类型采用IEEE-754标准的表达方式。1. 浮点数表示Go语言定义了两个类型float32和float64,其中float32等价于C语言的float类型,float64等价于C语言的double类型。在Go语言里,... 阅读全文
posted @ 2015-12-05 22:10 米加米加 阅读(514) 评论(0) 推荐(0) 编辑
  2015年12月4日
摘要: 我们在使用传统的强类型语言编程时,经常会出现这种情况,即在调用函数时为了获取一个值,却因为该函数返回多个值而不得不定义一堆没用的变量。在Go中这种情况可以通过结合使用多重返回和匿名变量来避免这种丑陋的写法,让代码看起来更加优雅。假设GetName()函数的定义如下,它返回3个值,分别为firstNa... 阅读全文
posted @ 2015-12-04 14:09 米加米加 阅读(145) 评论(0) 推荐(0) 编辑
  2015年12月3日
摘要: 通过const关键字,你可以给字面常量指定一个友好的名字:const Pi float64 = 3.14159265358979323846const zero = 0.0 // 无类型浮点常量const (size int64 = 1024eof = -1 // 无类型整... 阅读全文
posted @ 2015-12-03 14:09 米加米加 阅读(213) 评论(0) 推荐(0) 编辑
  2015年12月2日
摘要: 在Go语法中,变量初始化和变量赋值是两个不同的概念。下面为声明一个变量之后的赋值过程:var v10 intv10 = 123Go语言的变量赋值与多数语言一致,但Go语言中提供了C/C++程序员期盼多年的多重赋值功能,比如下面这个交换i和j变量的语句:i, j = j, i在不支持多重赋值的语言中,... 阅读全文
posted @ 2015-12-02 14:08 米加米加 阅读(779) 评论(0) 推荐(0) 编辑
  2015年12月1日
摘要: 对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素,如下所示:var v1 int = 10 // 正确的使用方式1var v2 = 10 // 正确的使用方式2,编译器可以自动推导出v2的类型v3 := 10 // 正确的使用方式3,编译器可以自动推导出v3的类型以上三种... 阅读全文
posted @ 2015-12-01 14:07 米加米加 阅读(265) 评论(0) 推荐(0) 编辑
  2015年11月30日
摘要: 由于Go语言与C语言之间的天生联系,Go语言的设计者们自然不会忽略如何重用现有C模块的这个问题,这个功能直接被命名为Cgo。Cgo既是语言特性,同时也是一个工具的名称。在Go代码中,可以按Cgo的特定语法混合编写C语言代码,然后Cgo工具可以将这些混合的C代码提取并生成对于C功能的调用包装代码。开发... 阅读全文
posted @ 2015-11-30 13:59 米加米加 阅读(327) 评论(0) 推荐(0) 编辑
  2015年11月29日
摘要: 邮件列表是Go语言最活跃的社区之一,而且与其他语言社区不同的是,在这里你可以很频繁地看到好多Go语言的核心开发成员(比如Ross Cox)亲自回答问题,其权威程度和对学习Go语言的价值显而易见。Go邮件组的地址为http://groups.google.com/group/golang-nuts 。... 阅读全文
posted @ 2015-11-29 14:06 米加米加 阅读(199) 评论(0) 推荐(0) 编辑
  2015年11月28日
摘要: 在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1... 阅读全文
posted @ 2015-11-28 14:04 米加米加 阅读(196) 评论(0) 推荐(0) 编辑
  2015年11月27日
摘要: 假设之前介绍的Hello, world代码被保存为了hello.go,并位于~/goyard目录下,那么可以用以下命令行编译并直接运行该程序:$ cd ~/goyard$ go run hello.go # 直接运行Hello, world. 你好,世界!使用这个命令,会将编译、链接和运行3个步骤合... 阅读全文
posted @ 2015-11-27 14:03 米加米加 阅读(177) 评论(0) 推荐(0) 编辑
  2015年11月26日
摘要: Google并没有随着Go 1的发布推出官方的Go集成开发环境(IDE),因此开发者需要自行考虑和选择合适的开发工具。目前比较流行的开发工具如下: 文本编辑工具gedit(Linux)/Notepad++(Windows)/Fraise(Mac OS X); 安装了GoClipse插件的Ecli... 阅读全文
posted @ 2015-11-26 20:03 米加米加 阅读(145) 评论(0) 推荐(0) 编辑
  2015年11月25日
摘要: 前面我们给大家大概介绍了第一个Go程序的基本结构,接下来我们来准备编译这段小程序的环境。在Go 1发布之前,开发者要想使用Go,只能自行下载代码并进行编译,而现在可以直接下载对应的安装包进行安装,安装包的下载地址为http://code.google.com/p/go/downloads/list。... 阅读全文
posted @ 2015-11-25 14:02 米加米加 阅读(143) 评论(0) 推荐(0) 编辑
  2015年11月24日
摘要: 每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。Go语言的main()函数不能... 阅读全文
posted @ 2015-11-24 14:01 米加米加 阅读(549) 评论(0) 推荐(0) 编辑
  2015年11月23日
摘要: 自Kernighan和Ritchie合著的《C程序设计语言》(The C Programming Language)出版以来,几乎所有的编程书都以一个Hello world小例子作为开始。我们也不免俗(或者说尊重传统),下面我们从一个简单Go语言版本的Hello world来初窥Go这门新语言的模样... 阅读全文
posted @ 2015-11-23 14:00 米加米加 阅读(179) 评论(0) 推荐(0) 编辑
  2015年11月22日
摘要: 反射(reflection)是在Java语言出现后迅速流行起来的一种概念。通过反射,你可以获取对象类型的详细信息,并可动态操作对象。反射是把双刃剑,功能强大但代码可读性并不理想。若非必要,我们并不推荐使用反射。Go语言的反射实现了反射的大部分功能,但没有像Java语言那样内置类型工厂,故而无法做到像... 阅读全文
posted @ 2015-11-22 13:58 米加米加 阅读(900) 评论(0) 推荐(0) 编辑
  2015年11月21日
摘要: Go语言引入了goroutine概念,它使得并发编程变得非常简单。通过使用goroutine而不是裸用操作系统的并发机制,以及使用消息传递来共享内存而不是使用共享内存来通信,Go语言让并发编程变得更加轻盈和安全。通过在函数调用前使用关键字go,我们即可让该函数以goroutine方式执行。gorou... 阅读全文
posted @ 2015-11-21 21:57 米加米加 阅读(194) 评论(0) 推荐(0) 编辑
  2015年11月20日
摘要: Go语言的类型定义非常接近于C语言中的结构(struct),甚至直接沿用了struct关键字。相比而言,Go语言并没有直接沿袭C++和Java的传统去设计一个超级复杂的类型系统,不支持继承和重载,而只是支持了最基本的类型组合功能。巧妙的是,虽然看起来支持的功能过于简洁,细用起来你却会发现,C++和J... 阅读全文
posted @ 2015-11-20 13:56 米加米加 阅读(287) 评论(0) 推荐(0) 编辑
  2015年11月19日
摘要: Go语言引入了3个关键字用于标准的错误处理流程,这3个关键字分别为defer、panic和recover。本书的“序”已经用示例展示了defer关键字的强大之处,在第2章中我们还会详细描述Go语言错误处理机制的独特之处。整体上而言与C++和Java等语言中的异常捕获机制相比,Go语言的错误处理机制可... 阅读全文
posted @ 2015-11-19 13:55 米加米加 阅读(107) 评论(0) 推荐(0) 编辑
  2015年11月18日
摘要: 目前的主流语言中除Python外基本都不支持函数的多返回值功能,不是没有这类需求,可能是语言设计者没有想好该如何提供这个功能,或者认为这个功能会影响语言的美感。比如我们如果要定义一个函数用于返回个人名字信息,而名字信息因为包含多个部分——姓氏、名字、中间名和别名,在不支持多返回值的语言中我们有以下两... 阅读全文
posted @ 2015-11-18 23:54 米加米加 阅读(158) 评论(0) 推荐(0) 编辑
  2015年11月17日
摘要: 除了几乎所有语言都支持的简单内置类型(比如整型和浮点型等)外,Go语言也内置了一些比较新的语言中内置的高级类型,比如C#和Java中的数组和字符串。除此之外,Go语言还内置了一个对于其他静态类型语言通常用库方式支持的字典类型(map)。Go语言设计者对为什么内置map这个问题的回答也颇为简单:既然绝... 阅读全文
posted @ 2015-11-17 13:52 米加米加 阅读(143) 评论(0) 推荐(0) 编辑
  2015年11月16日
摘要: 我们可以先看下不支持垃圾回收的语言的资源管理方式,以下为一小段C语言代码:void foo(){char* p = new char[128]; ... // 对p指向的内存块进行赋值 func1(p); // 使用内存指针delete[] p;}各种非预期的原因,比如由于开发者的疏忽导致最后的de... 阅读全文
posted @ 2015-11-16 13:50 米加米加 阅读(193) 评论(0) 推荐(0) 编辑
  2015年11月15日
摘要: Go语言作为一门全新的静态类型开发语言,与当前的开发语言相比具备众多令人兴奋不已的新特性。本书从第2章开始,我们将对Go语言的各个方面进行详细解析,让读者能够尽量轻松地掌握这门简洁、有趣却又超级强大的新语言。这里先给读者罗列一下Go语言最主要的特性: 自动垃圾回收 更丰富的内置类型 函数多返回... 阅读全文
posted @ 2015-11-15 13:49 米加米加 阅读(104) 评论(0) 推荐(0) 编辑
  2015年11月14日
摘要: 计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。C语言是纯过程式的,这和它产生的历史背景有关。Java语言则是激进的面向对象主义推崇者,典型表现是它不能容忍体系里存在孤立的函数。而Go语言没有去否认任何一方,... 阅读全文
posted @ 2015-11-14 13:48 米加米加 阅读(786) 评论(0) 推荐(0) 编辑
  2015年11月13日
摘要: 单机时代的语言可以只关心问题本身的解决,但是随着工程规模的不断扩大,软件复杂度的不断增加,软件工程也成为语言设计层面要考虑的重要课题。多数软件需要一个团队共同去完成,在团队协作的过程中,人们需要建立统一的交互语言来降低沟通的成本。规范化体现在多个层面,如: 代码风格规范 错误处理规范 包管理... 阅读全文
posted @ 2015-11-13 23:47 米加米加 阅读(154) 评论(0) 推荐(0) 编辑
  2015年11月12日
摘要: (一)AVEDEV(X,N):返回X在N周期内的平均绝对偏差。注:1、N为有效值,但当前的k线数不足N根,该函数返回空值;2、N为0时,该函数返回空值;3、N为空值,该函数返回空值;4、N不能为变量算法举例:计算AVEDEV(C,3);在最近一根K线上的值。用麦语言函数可以表示如下:(ABS(C-(... 阅读全文
posted @ 2015-11-12 13:45 米加米加 阅读(551) 评论(0) 推荐(0) 编辑
  2015年11月11日
摘要: (一)AUTOFILTER 自动对模型信号进行过滤。过滤规则:1、连续的同方向指令只有第一个有效,其他的将被过滤;2、交易指令必须先开后平配对出现(例如:出现BK指令,下一个指令只允许出现SP指令;反手则是SPK和BPK交叉出现)。例:CLOSE>OPEN,BK;CLOSEB才被认定为穿越。例1:C... 阅读全文
posted @ 2015-11-11 13:42 米加米加 阅读(617) 评论(0) 推荐(0) 编辑
  2015年11月10日
摘要: (一)AVPRICE取得K线图的均价。注:1、表示单根K线内的均价;2、日线周期上收盘后与SETTLE函数一样取得当日的结算价。例1:A:AVPRICE;//定义变量A为均价线;例2:MA5:MA(AVPRICE,5);//定义五个周期均价的平均值;例3:C>MA(AVPRICE,5);//价格大于... 阅读全文
posted @ 2015-11-10 13:40 米加米加 阅读(932) 评论(0) 推荐(0) 编辑