goLang 的计算语法这么恶心么 ,有优化的写法吗?

22 天前
 erwin1030
low := new(big.Int).Mul(baseFee, big.NewInt(9))

low = new(big.Int).Div(low, big.NewInt(10))

low = low.Add(low, priority25)
7101 次点击
所在节点    Go 编程语言
59 条回复
kivmi
22 天前
@bronyakaka java 可以使用静态类方法,稍微好看点
kivmi
22 天前
go 的内存, 谁创建,谁管理,所以用之前,必须分配内存啊,不像 java 还可以使用静态类方法
arielherself
22 天前
很多语言都不是由研究编程语言的人设计的,所以就会存在很多缺点。
zpxshl
22 天前
@5261 rust 以一己之力挑战全部语言。。。
lance6716
22 天前
虽然 go 确实比较啰嗦,但你这三行里面有两行都是自己多写了才啰嗦的啊,看看文档正确的写法吧
dcoder
21 天前
@5261 笑死, 研究着 Rust 的语法,回头看 C++ 都眉清目秀了
bruce0
21 天前
没有运算符重载的语言不都这样吗,又不是只有 go
ziyeziye
21 天前
可以使用 decimal 包,看起来要好一点,而且 bigint 大精度也没法用,还不如直接用 decimal
baseFee := decimal.NewFromInt(100)
priority25 := decimal.NewFromInt(25)

low := baseFee.Mul(decimal.NewFromInt(9)).Div(decimal.NewFromInt(10))
low = low.Add(priority25)
fmt.Println("low", low)
aloxaf
21 天前
自己写正常的数学表达式,然后让 AI 帮你转成 Go 写法
darklinden
21 天前
@5261 #20 rust 有函数重载的,纯写业务倒是比上面的舒坦多了。烦的是你需要算法等倒腾的时候,但是很多东西只要写一遍。写多了 c 艹,搞搞 rust 就觉得心智负担全丢给编译器了,舒爽
woniu7
21 天前
优雅没有任何意义
james122333
21 天前
这个你封装一下就好了 不想那就没办法
james122333
21 天前
@kivmi

静态类方法?
Go 只是没标示 static 吧
zzhirong
21 天前
@Donahue #18 我的理解, big 下有几种类型, 比如 big.Int, big.Float, 如果设计成包级别的, 函数名得是 big.AddInt, big.AddFloat 了
hailaz
21 天前
@erwin1030 #13 因为语气问题,你换个方式提问就好多了。
例如:go 语言大数运算有没有更好的方式,我觉得自己这个写法很啰嗦。
lujiaxing
21 天前
@woniu7 有很大意义. 代码写法越优雅, 后期维护难度越小.
那种一层套一层
{
{
{
{
{
{
{

的代码是最难以维护的.
woniu7
21 天前
@lujiaxing 这是写法问题吧,说的语言层面的优雅没有意义。你那写花里胡哨的语法糖表达式设计模式的语言,我拿来都可以刻意写难以维护的代码
zzhirong
21 天前
// 在 low 上执行链式操作 会好看些吧

low := new(big.Int)

low.Mul(baseFee, big.NewInt(9)).
Div(low, big.NewInt(10)).
Add(low, priority25)
InkStone
21 天前
@woniu7 编程语言的优雅,追求的就是一件事:写出来的代码一眼能读出想实现的逻辑,并且它也确实是这个功能。

这种优雅就是需要语言层面支持的。OP 提的这个点就是个很好的例子。把代码设计成主楼这样有什么好处吗?又不好读又不好写。这个问题还真就一定得语言层支持操作符重载才能解决,且操作符重载就是这一类运算代码的最佳实现方法。
woniu7
21 天前
@InkStone 就以这个为例,你确定一眼看不出很难看出这是在干什么??运算符重载用好可以很优雅,用不好可以很不优雅,go 就一刀切。比起用它做不优雅的事,这个稍微读一下就能懂,用它写不优雅的,你看死你

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1128449

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX