关于结构体转换的一些问题
来源:4-3 扩展已有类型

qq_精慕门7592651
2021-11-30
我在查资料的时候,遇到一些相关语法的困惑,请老师解惑下:
package main
import (
"fmt"
)
type Person struct {
firstName string
lastName string
}
type ps Person
func main() {
a := Person{"zhang", "san"}
b := ps{"li", "bai"}
var c = Person(b)
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
这个 c 的赋值这块,我实在没看明白,老师能和我说下吗
写回答
1回答
-
ccmouse
2021-12-21
a的类型是Person
b的类型是ps,注意这里ps不是Person,而是ps是一个和Person具有相同字段和方法的类型。
接下来,为了说明问题,我们可以写成:
var c Person = b
这句话应该编译错误,因为ps不是Person
不过编译器当然知道怎样把ps转化成Person。所以
var c Person = Person(b)
是对的。
我们代码里能省略的就要省略,因此有var c = Person(b)
00
相似问题