go:(一)编程基础2:函数,结构,方法,接口

发布时间 2023-06-25 11:50:16作者: nick_qiu

引用:

第 9 课:函数 function ? | 课程列表 |《Go 编程基础(视频)》| Go 技术论坛 (learnku.com)

1.函数:

 闭包:

 defer匿名函数调用:如下例就是引用变量地址的情况,只有作为参数传入时才是值拷贝

 recover使用:

 

2.结构:

 struct定义及变量初始化:

 匿名结构及指针:

嵌套匿名结构初始化:因为需要告诉系统结构的名称,所以对于嵌套的匿名结构没法像普通的结构那样初始化,需要通过如下的方式进行:

 匿名字段:

 结构组合:默认情况下系统会给嵌入结构赋予一个相同名称的字符名。

 通过结构组合实现类似类继承的效果

同级别嵌入命名冲突的情况:

 

3.方法:

 go编译器会根据方法的定义自动识别出是指针调用还是变量调用,所以可以直接用a.Print()调用, go语言不支持函数的重载。

method value及method expression调用

结构字段的Public及Private特性是包可见:即它只对非同一个包的调用才起效。

 

4.方法:

因为USB是接口类型,所以在Disconnect函数中无法直接使用usb.name打印名称。可以通过类型判断来实现这个目的,如下:

 在go语言中有类似于其他语言中所有类的基类的类型即空 interface,即go所有类型都实现的空 interface.

 switch type:通过type关键字告诉编译器自己去猜传递进来的实际是什么类型。

 interface类型转换:只能把interface转换为超级的interface。

理解:将对象赋值给接口时会发生拷贝,该接口内部存储的是指向该拷贝的指针,通常情况即无法修改该拷贝的状态,也无法获取该指针。

理解:只有当接口存储的类型和对象都为nil时,接口才是nil