关于go的一点小小的吐槽

最近在学go,发现一些很心智负担的写法,看几个例子:

  1. 变量的声明

     var a int
     var a = 10
     a := 10
    
     var a, b int
     var a, b = 10
     a, b := 10, 11
     var (
         a int 
         b = 10
     )

    搞这么多,累不累啊。

  2. 参数

    func test1(x int, y, z string, a ...int) {}
  3. 返回值

    func test2() x int {}
    func test3() (x int, y int) {}
  4. slice, map 初始化

    slice1 := []int{}
    slice2 := []int{1, 2}
    slice3 := make([]int)
    map1 := map[string]int{}
    map2 := map[string]int{"a":1, "b":2}
    map3 := make(map[string]int)
  5. 初始化结构体

    p1 := person{}
    p2 := &person{}
    p3 := &person{"name":"xxx", "age":18}
    p4 := new(person)
    p5 := &person{
     "name" : "xx"
     "age" : 28,
    }
    p6 := &person{
     "xx",
     38,
    }

在go中,会发现很多这种,干一件事情,搞七搞八的方式,真的心智负担。

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 24

跟 scala 比是弟中弟,,

7个月前 评论
Junwind (楼主) 7个月前
长日将尽

最直观的感受就是丑陋。

7个月前 评论
Junwind (楼主) 7个月前
Junwind (楼主) 7个月前
长日将尽 (作者) 7个月前
Junwind (楼主) 7个月前
Junwind

还有这种,Dream是Person的方法,不放在一起定义,要在外面定义,说好的开放封闭原则呢?

file

7个月前 评论
浮心 4个月前

换个角度想,允许你这么多种写法难道不算包容吗?😂

7个月前 评论

开发过程中可以规定只按一种写法

7个月前 评论
fatrbaby

我最受不了的是循环引用,每次组织代码都要小心再小心

7个月前 评论
goStruct 7个月前
mirahs 7个月前
yourself 7个月前

是的,虽然我后面基本都用同一种,但是团队肯定各写各的,都养成习惯了,导致看起来确实丑陋。

7个月前 评论
goStruct

go算好的了,现在php的写法才各种花里呼哨。

7个月前 评论

基本上开发中都会统一规定声明规范。只是记住这些的区别确实是心智负担

7个月前 评论
Junwind (楼主) 7个月前

go的简洁是对比出来的,对比其他语言真是比较简洁一种了

7个月前 评论

还好了,在C#面前算弟弟

7个月前 评论
wuvikr

什么语言都有一些奇奇怪怪的写法吧,不然就不会出现代码规范这种东西了。而且有些东西出现是有他的道理的。比如变量的声明这里:

  • var a int:用于延迟初始化
  • var a = 10:初始化并赋初始值
  • a := b: 短变量声明一般只用于函数内部
  • var( ):聚簇变量声明,一般用于声明同一类变量
4个月前 评论

楼主有强迫症吧?我觉得,一开始不需要完全掌握所有细节。可以先上手,再慢慢理解并掌握

4个月前 评论

变量的声明 , 我反而觉得灵活,怎么写都行

3个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
142
粉丝
17
喜欢
107
收藏
63
排名:258
访问:3.7 万
私信
所有博文
社区赞助商