登录
首页 >  Golang >  Go问答

golang的interface的一个疑问

来源:SegmentFault

时间:2023-01-19 13:48:02 464浏览 收藏

本篇文章给大家分享《golang的interface的一个疑问》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

package main

func main() { 
   var t1,t2 interface{} 
   println(t1==nil,t1==t2) 
  
   t1,t2=100,100
   println(t1==t2) 
  
   t1,t2=map[string]int{},map[string]int{} 
   println(t1==t2) 
}

golang小白请教两个问题

  1. map[string]int{}中的int{}是什么意思?它与map[string]int有什么区别吗?
  2. 为什么t1,t2=map[string]int{},map[string]int{} 这行代码会报错,panic: runtime error: comparing uncomparable type map[string]int?

正确答案

map[string]int{}
括号代表初始化(通过括号或者make),map如果只定义变量不初始化,默认值为
nil
。没有括号那就只是定义了这么一个
map[string]int
类型而已,使用必须要初始化,不然直接报错。

你报错的代码是

println(t1==t2)
这一行,因为go是静态语言,
map
是一个复杂类型,你自己创建的类型,底层根本就没有实现
=
这个操作。所以不能对比。
uncomparable type
不可比较的类型

今天带大家了解了go的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表