zoukankan      html  css  js  c++  java
  • go语言学习十三

    package main
    
    import "fmt"
    
    func main() {
    
    	//接口的相等性比较
    	type a interface {
    		aaa() int
    		bbb() int
    	}
    
    	type b interface {
    		bbb() int
    		aaa() int
    	}
    
    	var x a
    	var y b
    	fmt.Println(x == y) //true 对于接口,只要方法列表相同,即使顺序不同也是同一个接口,可以互相替换
    
    	//结构体的相等性比较
    
    	type aa struct {
    		aaa int
    		bbb int
    	}
    
    	type bb struct {
    		aaa int
    		bbb int
    	}
    
    	var xx aa
    	var yy bb
    	//fmt.Println(xx == yy) 不同的命名结构体相互比较,无法通过编译, 命名结构体 只要不是同一个名字的结构体即使结构相同也是不同的类型,不可互相替换
    	fmt.Println(xx, yy)
    
    	x1 := aa{1, 2}
    	x2 := aa{1, 2}
    	fmt.Println(x1 == x2) //true , 对于相同类型的结构体,只要字段值全部相同,那么这两个结构体值相等
    
    	//数组的相等性比较
    
    	y1 := [4]int{1, 2, 3, 4}
    	y2 := [4]int{1, 2, 3, 4}
    	y3 := [3]int{1, 2, 3}
    	fmt.Println(y1 == y2) //true , 对于相同长度的数组,相同索引位置的值都相等,那么这两个结构体值相等
    	fmt.Println(y1, y3)   // fmt.Println(y1 == y3) 不同长度的数组相等性相互比较,无法通过编译
    
    	//切片的相等性比较
    
    	z1 := []int{1, 2, 3}
    	z2 := []int{1, 2, 3}
    	z3 := z1
    	fmt.Println(z1, z2) // fmt.Println(z1 == z2) 切片之间的相等性比较,无法通过编译,operation == not defined on []int
    	fmt.Println(z3)     // fmt.Println(z1 == z3) 比较引用的相等性也不能通过编译
    
    	z4 := &z1
    	z5 := &z1
    	fmt.Println(z4 == z5) //同类型的指针是可以比较的,比较的是他们的地址是否相同,不同类型的指针也不能比较相等
    
    	//由于go不支持运算符重载,> < >= <= 只能用于数值和字符串类型
    }
    

      

  • 相关阅读:
    数据结构学习之前言,为年后换新工作做准备
    马云不想成为“马云”
    2014找工作总结-机会往往留给有准备的人
    数据分析≠Hadoop+NoSQL,不妨先看完善现有技术的10条捷径
    做个犀利的码农:如何持续培养/更新自己的开发技能
    Google七夕情人节Doodle背后技术揭秘
    把帖子用循环显示出来
    php验证登录
    用户注册
    form 表单用php来跳转页面
  • 原文地址:https://www.cnblogs.com/scala/p/9592628.html
Copyright © 2011-2022 走看看