关于go的一点小小的吐槽
最近在学go,发现一些很心智负担的写法,看几个例子:
变量的声明
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 )搞这么多,累不累啊。
参数
func test1(x int, y, z string, a ...int) {}返回值
func test2() x int {} func test3() (x int, y int) {}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)初始化结构体
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 协议》,转载必须注明作者和本文链接
关于 LearnKu
跟 scala 比是弟中弟,,
最直观的感受就是丑陋。
还有这种,Dream是Person的方法,不放在一起定义,要在外面定义,说好的开放封闭原则呢?
换个角度想,允许你这么多种写法难道不算包容吗?😂
开发过程中可以规定只按一种写法
我最受不了的是循环引用,每次组织代码都要小心再小心
是的,虽然我后面基本都用同一种,但是团队肯定各写各的,都养成习惯了,导致看起来确实丑陋。
go算好的了,现在php的写法才各种花里呼哨。
基本上开发中都会统一规定声明规范。只是记住这些的区别确实是心智负担
go的简洁是对比出来的,对比其他语言真是比较简洁一种了
还好了,在C#面前算弟弟
什么语言都有一些奇奇怪怪的写法吧,不然就不会出现代码规范这种东西了。而且有些东西出现是有他的道理的。比如变量的声明这里:
var a int:用于延迟初始化var a = 10:初始化并赋初始值a := b: 短变量声明一般只用于函数内部var( ):聚簇变量声明,一般用于声明同一类变量楼主有强迫症吧?我觉得,一开始不需要完全掌握所有细节。可以先上手,再慢慢理解并掌握
变量的声明 , 我反而觉得灵活,怎么写都行