Go中的struct比较知识点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go中的struct比较知识点相关的知识,希望对你有一定的参考价值。


说明

Go中的struct比较知识点_值类型

结论

指针类型的结构体和数值类型的结构提不能比较

同一个结构体的数值类型比较

@ 如果结构体中包含:slice(切边,注意: 不是数组), map,function类型不能比较
@ 除此之外可以比较

同一个结构体的指针类型比较

@可以比较,不用管结构体中是否包含不能比较的数据,因为比较的是指针地址

不同类型的结构体数值比较

@可以先通过强制转换再比较. 强制转换的前提是两个不同结构体除了名字不一样,其他都一样,否则强制转换会报错, 同时也无法比较

不同类型的结构体指针比较

@不能直接比较
@可以先将一个结构体数值强制转换为另一个结构体数组,在取指针比较,是可以的

例一

type test struct
num int //整形-类型数值
name string //字符串-字符类型
data float32 //浮点型
Arr [2]bool //数组
ptr *int //指针

//第一种:没有报错,说明可以比较,结果为true
func main()
one:=test
two:=test
fmt.Println(one==two)

//第二种:赋值,没有报错,说明可以比较,结果为false
func main()
one:=test
num: 123,

two:=test
num: 222,

fmt.Println(one==two)

//第三种:一个为指针,一个为值,报错,说明:值类型和指针类型不能比较
func main()
one:=&test
num: 123,

two:=test
num: 222,

fmt.Println(one==two) //报错

//第四种:都是指针类型,没有报错,说明可以比较。比较的是指针只想的地址
func main()
one:=&test
num: 123,

two:=&test
num: 222,

fmt.Println(one==two)


以上是关于Go中的struct比较知识点的主要内容,如果未能解决你的问题,请参考以下文章

Go编程基础-学习2

go中的struct

Go语言结构体struct详解,Go空结构体的这些妙用你知道吗?

Go中的struct

当 Go struct 遇上 Mutex

Golang关于Go中的struct{}