美文网首页
golang不愧是Web时代的C语言

golang不愧是Web时代的C语言

作者: ahuangsnail | 来源:发表于2018-11-01 23:24 被阅读0次

    以前一直用的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语言

          本文链接:https://www.haomeiwen.com/subject/sawfxqtx.html