2021-05-31 Go语言 对比 Java

Posted 涂涂努力ing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-31 Go语言 对比 Java相关的知识,希望对你有一定的参考价值。

Go语言 对比 Java(一)

本人从大学开始一直接触的是Java最多,经过多次面试和第一份工作的需要学习了GO语言;我相信大家和我一样在学习语言的时候,大多数人都会利用类比的方法,使细节在学习过程中更加容易理解。所以,在学习GO语言的同时,我整理了其与Java的相同与不同点来帮助我自己有更好的学习体系。

基本用法

GoJava
封装struct关键字定义结构体,结构体内可以有字段和方法class关键字定义类,将所有的属性和方法都封装在类中
多态只能通过接口来实现多态通过类的继承和接口来实现多态
继承不支持继承支持继承
标识符没有标识符,通过方法的首字母大小写来控制其是包外可访问还是不可访问有private,public,protected,默认等标识符,来控制权限
引用所有对象默认为值引用,对象前有&则表示地址引用基础类型是值引用,其他类型是地址引用
接口Duck typing,不用显示实现,只要实现了与接口包含的所有函数签名相同的方法即可先定义后实现
方法func main()public static void main(string[] args)
入参&返回值入参类型在参数后面,返回类型在入参后面类型都在参数前面
变量定义类型在变量的后面变量在定义类型后面

进阶用法

GoJava
多参返回当参数较少时可以一次性返回,不用构造结构体没有多参数返回,如果返回多个参数需要改变数据结构或者引用类的对象
构造函数不存在默认构造函数,但是提供了init函数提供默认构造函数
静态常量用const关键字定义;使用const定义的静态变量是不可用修改或赋值的用static final关键字定义;前者表示静态的意思,但这个静态是可以被修改的

数据结构

GoJava
基本类型布尔值;数值型;字符串型:char;boolean;byte;short;int;long;float;double
链表:数据元素的线性集合可以实现可以实现
数组:具有相同唯一类型的一组已编号且长度固定的数据项序列可以实现可以实现
切片:切片是长度可变、容量固定的相同的元素序列可以实现类似于ArrayList
Map可以实现可以实现
指针有指针概念没有指针概念
Channel:本质就是一个数据结构-队列 FIFO 线程安全可以实现可以实现

其他Go语言数据类型详情,可参考https://www.cnblogs.com/itbsl/p/9854681.html
关于Channel的用处,以及为什么要用它,以及其具体作用可参考https://www.jianshu.com/p/359a6e1ccd94

以上则是我针对Go和Java真理的最基础的概念及数据类型对比,关于错误处理及垃圾回收等其他对比,等我仔细学习后再来整理吧
谢谢最近越来越多的人来关注我,真的很开心也很荣幸,希望我分享的内容能帮助大家理解
继续享受学习
涂涂努力ing

以上是关于2021-05-31 Go语言 对比 Java的主要内容,如果未能解决你的问题,请参考以下文章

2021-05-31

GO语言:接口空接口与Java语言的对比

Go 和 Java 对比学习:单例模式

开启go 05.Go语言和其他语言的对比

erlang对比java优势在哪

Go语言和Javapython等其他语言的对比分析