结构体使用细节(2)|学习笔记

简介: 快速学习结构体使用细节(2)

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:结构体使用细节(2)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/626/detail/9674


结构体使用细节(2)

 

内容介绍:

一、结构体使用细节2

二、结构体使用细节3

 

一、结构体使用细节2

结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的字段(包括名字、个数和类型)

举例说明

最后一行代码:b = B(a)正确吗?

type A struct {

Num int

}

type B struct {

Num int

func main(){

var a A

var b B

b = B(a)

创建验证

新建一个文件夹structdetails2,创建main.go文件,输入以下代码:

package main

import "fmt"

type A struct {

Num int}

type B struct {

Num int}

func main(){

var a A

var b B

fmt.Println(a,b)

}

l 输出结果为0、0

l 结论:若对 b 进行强转,a=A(b),也可以完成,输出结果也为0、0,若要完成转换,则需要结构体的的字段完全一样(包括名字、个数和类型)。

 

二、结构体使用细节2

结构体进行type重新定义(相当于取别名),Golang认为是新的数据类型,但是相互间可以强转

l 举例说明1

type student struct{

Name string

Age int

}

type Stu student

func main(){

var Stu1 Student

var stu2 Stu

Stu2=Stu1//正确吗?

fmt.Println(stut1,stu2)

}

结论:利用type对结构体进行重新定义,比如定义为student的结构体,type定义为Stu,Stu和student其实是同一种结构体。而定义了Stu1和Stu2的时候,不可以将Stu1直接赋值给Stu2,这是因为Golang认为是经type重新定义后Stu转变成新的数据类型,即Golang认为Stu和students是两个不相同的数据类型。因此直接把Stu1交给Stu2是错的,可以将 Stu2 进行强转,修改成stu2 =Stu(stu1),此时相当于两个结构体有了相同的字段。

l 举例说明2

type integer int

func main(){

var i integer = 10

var j int = 20

j =i//正确吗?不可以!修改: j=int(i)

fmt.println(i,j)

}

int是由golang设计好的数据类型,用type将int重新定义为integer,即integer相当于int。此时若把10赋给integer i,把20赋给int j,不能将i赋值给j。原因与例1一样,经type重新定义后,integer和int是两个不同的数据类型,因此不可以把i直接赋给j,修改成j=int(i)经过强转后,i可以赋给j。

 

相关文章
|
6月前
|
C++
C++系列十四:结构体
C++系列十四:结构体
|
3月前
|
C++
c++学习笔记07 结构体
C++结构体的详细学习笔记07,涵盖了结构体的定义、使用、数组、指针、嵌套、与函数的交互以及在结构体中使用const的示例和解释。
39 0
|
5月前
|
编译器 C语言 C++
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
|
4月前
|
存储 程序员 编译器
|
存储 编译器 C语言
自定义类型【结构体】详详详详解!
自定义类型【结构体】详详详详解!
自定义类型【结构体】详详详详解!
|
6月前
|
编译器 Linux C语言
自定义类型:结构体进阶学习分享
自定义类型:结构体进阶学习分享
42 0
|
Linux C++
【自定义类型详解】第一篇——结构体详解(二)
【自定义类型详解】第一篇——结构体详解(二)
113 0
|
编译器 C语言
【自定义类型详解】第一篇——结构体详解
【自定义类型详解】第一篇——结构体详解
97 0
|
算法 C语言 C++
你是真的“C”——详解结构体知识点
前言🙌 什么是结构体?🙌 1. 结构体的声明🙌 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问🙌 3结构体传参🙌 总结撒花💞
72 0
|
存储 C语言
深究C语言-5结构体后续(除结构体外的自定义类型)
c99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。
105 0
深究C语言-5结构体后续(除结构体外的自定义类型)
下一篇
无影云桌面