结构体使用细节(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。

 

相关文章
|
8月前
|
C++
C++系列十四:结构体
C++系列十四:结构体
|
7月前
|
编译器 C语言 C++
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
结构体的详解(想要彻底了解结构体,那么看这一篇就够了!)
|
6月前
|
存储 程序员 编译器
|
8月前
|
编译器 Linux C语言
自定义类型:结构体进阶学习分享
自定义类型:结构体进阶学习分享
47 0
|
Linux C++
【自定义类型详解】第一篇——结构体详解(二)
【自定义类型详解】第一篇——结构体详解(二)
118 0
|
编译器 C语言
【自定义类型详解】第一篇——结构体详解
【自定义类型详解】第一篇——结构体详解
101 0
c++第十篇结构体例子
c++第十篇结构体例子
|
存储 C语言
深究C语言-5结构体后续(除结构体外的自定义类型)
c99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员。
110 0
深究C语言-5结构体后续(除结构体外的自定义类型)
|
算法 C语言 C++
你是真的“C”——详解结构体知识点
前言🙌 什么是结构体?🙌 1. 结构体的声明🙌 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问🙌 3结构体传参🙌 总结撒花💞
85 0
|
Web App开发 C语言
【C语言】全面解析结构体,结构体知识点整理
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。组成结构型数据的每个数据称为结构型数据的“成员”。结构体通常用来表示类型不同但是又相关的若干数据。