golang函数返回值是结构体值的时候,为何不能对成员赋值呢?

Python08

golang函数返回值是结构体值的时候,为何不能对成员赋值呢?,第1张

1,右值不可赋值2,函数返回的是右值getTest()是右值,结构体整体都是右值,右值不可赋值getTestPoint()返回当然也是右值,但只有指针是右值,即你不能给返回的指针赋值(例如:getTestPoint() = nil),但是可以给指针指向的结构体成员赋值(就像你代码里那样)有右值自然就有左值,左值是可被赋值的,例如t := getTest() //getTest() 返回的右值,赋值给左值tt.test = 1,左值可被赋值

接口像是一个公司里面的领导,他会定义一些通用规范,只设计规范,而不实现规范。

go语言的接口,是一种新的类型定义,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。

语法格式和方法非常类似。

在接口定义中定义,若干个空方法。这些方法都具有通用性。

下面我定义一个USB接口,有读read和写write两个方法,再定义一个电脑Computer和一个手机Mobile来实现这个接口。

USB接口

Computer结构体

Mobile结构体

Computer实现USB接口方法

Mobile实现USB接口方法

测试

运行结果

下面我们定义一个OpenClose接口,里面有两个方法open和close,定义个Door结构体,实现其中一个方法。