温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GO的作用什么呢

发布时间:2022-01-17 16:50:43 来源:亿速云 阅读:183 作者:kk 栏目:大数据

这篇文章的内容主要围绕GO的作用什么呢进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!

Go 的优点:实现快 + 资源占用低 + 任意环境随便跑,综合考虑在很多场景十分好使 。

  1. Go 适合造轮子,哪个库不好用就自己造。

  2. Go 适合写工具,比如 hugo 、hub、fzf,还有国人写的 linux 下的百度 pan client 都是 go 实现的。

  3. Go 适合实现 C/C++ 一部分业务,Java 的大部分业务。

  4. 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的作用什么呢
Java 能写我的世界,C# 能写 Unity,Go 自然也能写游戏引擎,当然也能写其他更简单的系统,比如一些所谓“很复杂”的业务系统。

Go 不管写业务还是造轮子都很高效,既有高级语言特性,又能当更好的 C 用,构建部署也简单。

常规业务 Go 能被 C/C++ 碾压的主要就是瞬时的峰值内存,这个无解,但碾 Java 也没问题。

目前后端这块我没觉得什么是 Go 特别不适合干或者不能干的。

如果不用 Go,我估计也只会用 Rust,如果要写大量矩阵运算,泛型和操作符重载是仅有的我想要但 Go 没有的。

实际上用 Go 的很多也是多语言的牛人,比如 junegunn、spf13,都是背着几个几万 star 项目。

最后举几个比较偏但有意思的项目:

hunterloftis/pbr 一个 Go 写的基于物理渲染的光追渲染器

GO的作用什么呢

fogleman/pt 另一个光追渲染器

GO的作用什么呢

shibukawa/nanovgo 日本人移植的 Go 版的 nanovg,基于 OpenGL 实现了画框、画线、画字的 Go API,相当于原来 Windows 上的 Direct Draw

GO的作用什么呢

shibukawa/nanogui-go 上面那位作者移植的 Go 版的 nanogui,基于他移植的 nanovgo 实现的 GUI 库

GO的作用什么呢

Shopify/go-lua  Go 实现的 lua 5.2 VM

wooga/go-entitas 一个非常精简的 ECS 实现

最后说一句,这个世界上有太多有意思的问题和领域值得学习和探索。

语言最终是用来表达你思想和思维的,只要能帮你快速解决问题达到目标,对你而言就是好语言。

什么是go

go是golang的简称,golang 是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,其语法与 C语言相近,但并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能。

感谢你的阅读,相信你对“GO的作用什么呢”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注亿速云网站!小编会继续为大家带来更好的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

go
AI