这篇文章的内容主要围绕GO的作用什么呢进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!
Go 的优点:实现快 + 资源占用低 + 任意环境随便跑,综合考虑在很多场景十分好使 。
Go 适合造轮子,哪个库不好用就自己造。
Go 适合写工具,比如 hugo 、hub、fzf,还有国人写的 linux 下的百度 pan client 都是 go 实现的。
Go 适合实现 C/C++ 一部分业务,Java 的大部分业务。
Go 适合做最外层的胶水,通过 RPC/REST/CGO 粘合不同语言的模块,而在这个胶水层还可以实现各种业务逻辑,又不用像 shell/py/node 有诸多顾虑和局限。
Go 提供了纤程、指针、 unsafe, cgo 加上 C/C++ 兼容的内存布局和跨平台的汇编,有了这些你能做的事情的上限基本就非常高了。
所以问题不是它适合做什么,是你有能力用它做什么。
在用 Go 写一个渲染器,因为学图形,需要一个应用框架来复现各类图形技术、论文和学习实践 PBRT 。
开始用 C++ 和 Go 同时写,主要实现是 C++,Go 只用来做架构探路,搞搞快速原型。
中间需要实现一个异步消息框架,负责 GLFW 的 key event 和 window event 与图形逻辑、骨骼计算、camera 控制进行数据通讯,还要保证所有绘制 event 都在主线程做 draw call。这个功能用 Go 实现的逻辑 100 行不到,只用了3个特性:chan, init(),不定长参数。当初设计 + 查语法 + 写完 + 测试只花了大概 40 分钟,然后一直用到现在。
在做的过程中发现 Go 实现各种逻辑太方便了,而且基本上没啥干不了的,最后决定全部用 Go ,放弃 C++。
中间发现 Go 的标准库不支持 DDS 贴图,直接撸了个 Go 版的 DDS 库。大致就是看了下 wiki 了解了 DDS 格式,然后从 nv_dds 找到关键代码,逐行翻译成 Go 就搞定了,非常简单。
现在在写骨骼动画和 GUI, GUI 在参考一个日本人移植到 Go 的 nanovg 和 nanogui,非常有价值,他用 Go 实现了基于 OpenGL 的 draw api 还用 Go 搞定了 true type 字体的绘制。
因为需要管理大量模型的状态,打算用 orm + sqlite。但 gorm 的很多地方都不满意,也在考虑自己撸。
现在这个渲染器是这个程度:
Go 不管写业务还是造轮子都很高效,既有高级语言特性,又能当更好的 C 用,构建部署也简单。
常规业务 Go 能被 C/C++ 碾压的主要就是瞬时的峰值内存,这个无解,但碾 Java 也没问题。
目前后端这块我没觉得什么是 Go 特别不适合干或者不能干的。
如果不用 Go,我估计也只会用 Rust,如果要写大量矩阵运算,泛型和操作符重载是仅有的我想要但 Go 没有的。
实际上用 Go 的很多也是多语言的牛人,比如 junegunn、spf13,都是背着几个几万 star 项目。
最后举几个比较偏但有意思的项目:
hunterloftis/pbr 一个 Go 写的基于物理渲染的光追渲染器
fogleman/pt 另一个光追渲染器
shibukawa/nanovgo 日本人移植的 Go 版的 nanovg,基于 OpenGL 实现了画框、画线、画字的 Go API,相当于原来 Windows 上的 Direct Draw
shibukawa/nanogui-go 上面那位作者移植的 Go 版的 nanogui,基于他移植的 nanovgo 实现的 GUI 库
Shopify/go-lua Go 实现的 lua 5.2 VM
wooga/go-entitas 一个非常精简的 ECS 实现
最后说一句,这个世界上有太多有意思的问题和领域值得学习和探索。
语言最终是用来表达你思想和思维的,只要能帮你快速解决问题达到目标,对你而言就是好语言。
go是golang的简称,golang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其语法与 C语言相近,但并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能。
感谢你的阅读,相信你对“GO的作用什么呢”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。