美文网首页
go compare slice map struct

go compare slice map struct

作者: forever_hl_1108 | 来源:发表于2020-10-29 12:07 被阅读0次
package test


import (
        "testing"
"fmt"

)

type F func(int)int

func f1(a int)int{
        return 32
}
func f2(a int)int{
        return 32
}
func Test_compare(t *testing.T){

        ch1 := make(chan int, 3)
        ch2 := make(chan int, 3)
        fmt.Printf("chan compare : %v\n", ch1==ch2)  //false
        ch1 <- 1
        ch2 <- 1
        fmt.Printf("chan compare : %v\n", ch1==ch2) //false
        ch3 := ch1
        fmt.Printf("chan compare : %v\n", ch1==ch3) //true

        m1 := make(map[string]string)
        m2 := make(map[string]string)
        //fmt.Printf("map compare : %v\n", m1==m2)  //invalid operation: m1 == m2 (map can only be compared to nil)
        _ = m1
        _ = m2

        s1 := make([]int, 2)
        s2 := make([]int, 2)
        //fmt.Printf("slice compare : %v\n", s1==s2)  //invalid operation: s1 == s2 (slice can only be compared to nil)
        fmt.Printf("slice len:%v, cap:%v\n", len(s1), cap(s2))  //2, 2

        //fmt.Printf("func compare:%v\n", f1==f2) //invalid operation: f1 == f2 (func can only be compared to nil)

/*-------------------------------slice-----------------------------------*/
        var arr [10]int = [10]int{0,1,2,3,4,5,6,7,8,9}
        fmt.Printf("arr:%v, arr[0]:%v\n", arr, &arr[0])

        a1 := arr[6:8]
        fmt.Printf("slice a1 len:%v, cap:%v\n", len(a1), cap(a1))  //2, 4

        a2 := arr[6:]
        fmt.Printf("slice a2 len:%v, cap:%v\n", len(a2), cap(a2))  //4, 4

a2[0] = 666
        fmt.Printf("a2:%v, arr:%v\n", a2, arr)

        fmt.Printf("address arr[0]:%v, a2:%p\n", &arr[0], a2)

        a2 = append(a2, 10)
        fmt.Printf("slice a2 len:%v, cap:%v\n", len(a2), cap(a2))  //4, 8

        a2[0] = 666666

        fmt.Printf("a2:%v, arr:%v\n", a2, arr)

        fmt.Printf("address arr[0]:%v, a2:%p\n", &arr[0], a2)



}

相关文章

网友评论

      本文标题:go compare slice map struct

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