分享
  1. 首页
  2. 文章

golang不愧是Web时代的C语言

ahuangsnail · · 2331 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:ahuangsnail

查看原文:golang不愧是Web时代的C语言

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2331 次点击
1 回复 | 直到 2018年11月02日 14:16:50
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏