2021-05-31
Posted 涂涂努力ing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-31相关的知识,希望对你有一定的参考价值。
Go语言 对比 Java(一)
本人从大学开始一直接触的是Java最多,经过多次面试和第一份工作的需要学习了GO语言;我相信大家和我一样在学习语言的时候,大多数人都会利用类比的方法,使细节在学习过程中更加容易理解。所以,在学习GO语言的同时,我整理了其与Java的相同与不同点来帮助我自己有更好的学习体系。
基本用法
Go | Java | |
---|---|---|
封装 | struct关键字定义结构体,结构体内可以有字段和方法 | class关键字定义类,将所有的属性和方法都封装在类中 |
多态 | 只能通过接口来实现多态 | 通过类的继承和接口来实现多态 |
继承 | 不支持继承 | 支持继承 |
标识符 | 没有标识符,通过方法的首字母大小写来控制其是包外可访问还是不可访问 | 有private,public,protected,默认等标识符,来控制权限 |
引用 | 所有对象默认为值引用,对象前有&则表示地址引用 | 基础类型是值引用,其他类型是地址引用 |
接口 | Duck typing,不用显示实现,只要实现了与接口包含的所有函数签名相同的方法即可 | 先定义后实现 |
方法 | func main(){} | public static void main(string[] args){} |
入参&返回值 | 入参类型在参数后面,返回类型在入参后面 | 类型都在参数前面 |
变量 | 定义类型在变量的后面 | 变量在定义类型后面 |
进阶用法
Go | Java | |
---|---|---|
多参返回 | 当参数较少时可以一次性返回,不用构造结构体 | 没有多参数返回,如果返回多个参数需要改变数据结构或者引用类的对象 |
构造函数 | 不存在默认构造函数,但是提供了init函数 | 提供默认构造函数 |
静态常量 | 用const关键字定义;使用const定义的静态变量是不可用修改或赋值的 | 用static final关键字定义;前者表示静态的意思,但这个静态是可以被修改的 |
数据结构
Go | Java | |
---|---|---|
基本类型 | 布尔值;数值型;字符串型: | 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的主要内容,如果未能解决你的问题,请参考以下文章