从Delphi到Go——基础
从其它平台迁移而来 废话 长期从事Delphi开发,虽不敢说精通,但说很熟悉还是相当有自信的。不过,只会一门语言,而且还是这么老的语言,更是在大天朝很小众的语言,总感觉自己离饿死街头没多远了,所以趁着还没老再学个潮点的吧。 先前考虑过Python,初步了解后觉得不太适合自己: 解释型语言:部署时得先搞个运行环境,发布的程序就是源码本身,再加上这个执行效率,怎么想都还是编译型语言更合适。 动态语言:无需声明,拿来就用,这已经很不合习惯了。想想一个变量,前一秒还是浮点数,下一秒就成字符串了,再一眨眼又成某个对象了……虽然一般不会有人这么写,但是挡不住手误啊,还是把这种小细节交给编译器更让人放心。 所以,对于有点强迫症和洁癖的自己,最后还是选了Go,比较符合已有的编程习惯,学习成本应该相对会低些吧。 至于Go嘛,想学是已经很久了,但由于种种原因却迟迟未开启,不过终究还是要迈出这一步的,所以就搞这么个系列来记录吧,一方面算是自我督促,另一方面也算是一种交流吧,当然,若一不留神帮上了谁,那自是开心极了。 言归正传 已经初步了解过了Go,说来和Delphi还是有不少相似之处呢,从Delphi转向Go应该会比较轻松吧。 工程结构 Delphi的工程算是比较自由的,源码的话,只要把单元路径引了或是直接包含进工程单元里就可以了,编译出的dcu和最终的exe指定下路径也就没问题了,通常我都使用下面这种结构: 1 2 3 4 5 6 7 8 9 10 11 Project/ bin/ src/ dcu/ mod1/ *.dfm *.pas mod2/ *.dfm *.pas *.dpr 不过,每一个工程都要设置,而且我习惯将Debug和Release设置完全一样,也还真是够烦的。 Go就没得选了,只有一种结构: 1 2 3 4 5 6 7 8 9 10 11 Project/ bin/ pkg/ src/ *.go mod1/ *.go *_test.go mod2/ *.go *_test.go 整体和我原有的习惯差不多,还是蛮容易接受的,不过倒是要把这Project的路径加入到GOPATH系统变量里让人有一点小不爽。但是Go可以直接把测试都写了,这点还是蛮让我惊喜的,毕竟用了这么多年Delphi也没写过一行像样的测试。 源码结构 Delphi典型的源码结构是这样: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 unit Unit1; interface uses ....