Go语言的特性

Go语言的特性

  1. 与C语言相比,Go语言摒弃了语句必须以分号作为语句结束标记的习惯
  2. 支持多重赋值:语句 i, j = j, i 可以交换变量i和变量j的值;函数支持多重返回值
  3. 预定义itoa常量,该常量可以被编译器修改,在每一个const关键字出现时被重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。
  4. 以大写字母开头的变量、常量、函数在包外可见(public),以小写字母开头的变量、常量、函数在包内私有(private)
  5. c语言没有定义布尔类型,其他提供布尔类型的语言(如Go)均不支持布尔类型与其他数据类型的转换
  6. Go语言支持两个字符类型,一个是byte,代表UTF-8字符串的单个字节的值;另一个是rune,代表单个Unicode字符(尽管Unicode字符在标准库中有支持,但实际上很少使用)
  7. Go语言中的循环语句只支持for关键字,而不支持while和do-while结构

  1. Go语言放弃了包括继承在内的大量面向对象特性,只保留了组合这个最基本的特性
  2. 在Go语言中,未进行显式初始化的变量都会被初始化为该类型的零值,例如bool类型的零值为false,int类型的零值为0,string类型的零值为空字符串。
  3. Go语言很清晰地告诉我们内存的布局,并且我们可以调整struct中成员的位置来修改内存布局
  4. 非侵入式接口:在Go语言中,一个类只需要实现了接口所要求的所有函数,我们就说这个类实现了该接口。我们在实现一个类时只需要关注功能本身的完整性,而不必关系它到底应该实现哪些接口,接口的使用方在定义接口时也不需要关心是否有模块实现了这个接口,按照自身的需求定义即可,这样便将实现类和接口解耦
  5. 任何类型均满足空接口interface{},所以空接口interface{}在Go语言中的作用相当于Object在Java中的作用
  6. 使用select机制可以处理channel超时问题。select的特点是只要其中一个case已经完成,程序就会继续往下执行,而不会考虑其他case的情况。所以我们可以执行一个包含计时功能的协程(goroutine),然后在select的case语句中包含它,这样便避免了永久等待问题

猜你喜欢

转载自blog.csdn.net/a16302010048/article/details/103788566