关于结构体转换的一些问题

来源: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)

0
0

Google资深工程师深度讲解Go语言 由浅入深掌握Go语言

语法+分布式爬虫实战 为转型工程师量身打造

5995 学习 · 1909 问题

查看课程