golang学习—杂记
刚开始学习golang,在这里记录一下遇到的问题
1.关于slice
之前我是学习java,golang和java区别还是蛮大的,例如切片,切片在我理解就是一个不需要定容量的arrary,slice与arrary的定义方式在golang里也是蛮像的,我将slice理解为java中的list,这样就好理解的多了,slice有两个重要属性:len(长度)、cap(容量),通过这两个可以获取到切片的当前长度和最大容量,给slice增加值,通过append即可
定义一个切片:
slic:=make([]type,0)
2.main包下的方法调用问题
测试服务端的代码,前人写了小demo.我最近整理,
发现,基本上所有的代码都放在了main包里,我觉得这样不好管理,我想要把测试用例放另一个包中,main里放一些公共方法,发现根本无法引用main包中定义的方法,研究后才知道,main包可以调用其他包中的方法,但是其他包不能回调main包
因为golang不能循环调用
3.函数和方法不同
golang中的函数和方法是不同的东西,这貌似在java中没有什么明显区分
函数:
func test(){
pass
}
方法:“在func后面为接受者的是方法”,我是这样理解的,一个结构体包含很多属性,属性可以是变量,其他结构体,也可以是方法,类似于java中的get set方法,结构体中的变量对于方法可以不用传参即可使用,因为他们同属于一个结构体
func(t *stuct) test(){
t.name = "marry"
fmt.Printf(t.name)
}
4.函数可以作为参数
在golang中函数也是一种类型的,可以看成是某类型的参数,在方法传参时,可以将函数作为参数传过去,函数对参数的处理,会通过回调得到参数值,这一点挺新奇的