内容简介:以前一直用的python,最近想做个利用web浏览器作为前后处理view层的有限元分析软件的小项目,想着计算效率可能会成为一个瓶颈,而且每次十多万的整数和浮点数传输不可能用文本格式,想用websocket。正好python也快用吐了,用golang换换口味。前一个月看了看golang的go语言编程,又用gin写了个简单的curd。感觉还行。然后开始正式撸一个将 abaqus 的inp文件中的网格解析成用于显示的三角面片,用于图形显示。
以前一直用的python,最近想做个利用web浏览器作为前后处理view层的有限元分析软件的小项目,想着计算效率可能会成为一个瓶颈,而且每次十多万的整数和浮点数传输不可能用文本格式,想用websocket。正好 python 也快用吐了,用golang换换口味。
前一个月看了看golang的 go 语言编程,又用gin写了个简单的curd。感觉还行。
然后开始正式撸一个将 abaqus 的inp文件中的网格解析成用于显示的三角面片,用于图形显示。
整个撸代码的过程中,就像是开着一辆卡车,一路上
首先是在python中最习惯的列表的map filter reduce操作,毕竟没有泛型,我也有心里准备。
比如 python 中的一句话
ys = [x*x for x in xs if x%2==0]
golang中需要这样
ys:=make([]int,len(xs))
for _,x := range xs{
if x%2==0{
ys=append(ys,x*x)
}
}
虽然早听说golang的目标是web时代的C,但一直也没什么感触,有也只是往运行效率方面想。
直到碰到了要判断一个集合中是否包含某个元素。
在python中也就是一个 in 的事情,比如
if a in xs:
print('a in xs')
在golang中你需要手动的去遍历这个slice,然后返回true 或 false。
[mathjax]
手动遍历slice的时候自然而然就会想这个slice是不是经常要查询,需不需要先排序,把查询的复杂度从[latex]n[/latex]降到[latex]log(n)[/latex]
类似的这种还有 sort 函数等等。
突然让我感慨,golang果然不愧是web时代的C,这让我想仿佛回到用C的时候,写业务逻辑代码之前要先设计数据结构。从最基本的List还是写起,还要根据实际需求,决定这个List是单项还是双向。业务中如果经常需要查询操作,必然还要再写一个搜索二叉树,设计一个struct的时候还要考虑字节对齐的问题。
果然golang不愧是web时代的C。
以上所述就是小编给大家介绍的《golang不愧是Web时代的C语言》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别
- 计算机语言发展的三个阶段:机器语言、汇编语言与高级语言
- 凹 (“Wa”) 语言:可以嵌入 Go 语言环境的脚本语言
- Rust语言恰巧是一门解决了Go语言所有问题的语言
- 获取系统语言/当前 App支持语言
- 【Go 语言教程】Go 语言简介
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
编写高质量代码:改善Python程序的91个建议
张颖、赖勇浩 / 机械工业出版社 / 2014-6 / 59.00元
在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的最佳实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为......一起来看看 《编写高质量代码:改善Python程序的91个建议》 这本书的介绍吧!