golang不愧是Web时代的C语言

栏目: C · 发布时间: 6年前

内容简介:以前一直用的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语言》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Artificial Intelligence

Artificial Intelligence

Stuart Russell、Peter Norvig / Pearson / 2009-12-11 / USD 195.00

The long-anticipated revision of this #1 selling book offers the most comprehensive, state of the art introduction to the theory and practice of artificial intelligence for modern applications. Intell......一起来看看 《Artificial Intelligence》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码