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