美文网首页
Go中的struct比较知识点

Go中的struct比较知识点

作者: 风洛神 | 来源:发表于2020-07-08 17:35 被阅读0次

说明

image.png

结论

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

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

@ 如果结构体中包含: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

    结构struct Go中的struct与C中的struct相似,并且go没有class 使用type 结构名称 s...

  • 《日子》golang-结构struct

    结构struct -Go中的struct与C中的struct非常相似,并且Go没有class-使用type

  • 第五节结构struct

    struct相当于面向对象中的class 1.go中的struct与c中的struct非常相识,并且go没有cla...

  • go结构体和方法

    struct为何物 go中的struct可以实现oop中的类、方法。go语言中的struct成员可以是任何类型,如...

  • 10 结构体struct

    Go 中的struct与C中的struct非常相似,并且Go没有class使用 type struc...

  • go业务code

    runtime go struct能不能比较 同一个struct的2个实例能否比较1.成员变量带有了不能比较的成员...

  • Golang -- Json序列化

    简述 在使用Go Struct的Json Marshal的时候,通过Json To Go Struct工具可以生成...

  • Golang后端面试汇总-001

    基础面试 go的调度 为什么在内核的线程调度器之外Go还需要一个自己的调度器? go struct能不能比较 go...

  • cgo example

    go access c struct go access c memory

  • Go中 struct{} 和 struct{}{} 的差别是什么

    struct是Go中的关键字。它用于定义结构类型。例如:For example: struct {}是一个无元素的...

网友评论

      本文标题:Go中的struct比较知识点

      本文链接:https://www.haomeiwen.com/subject/yquscktx.html