范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

为Java开发者准备的Go教程01漫游了

  原文链接:https://www.tuicool.com/articles/NnUZZ3b
  在正式工作之前,一直使用 Java,虽然这些年对 Java 的关注变少了,但很显然,Java 用户群体特别大。不过,我也知晓,有不少人知道 Java 用户在学 Go。我尝试写一系列文章,为 Java 开发者讲解 Go 语言。
  这是第一篇,从大的层面简单对比下 Go 和 Java,算作是一次漫游。
  整体上,Java 和 Go 之间有许多明显而微妙的区别,包括语言层面和运行层面。我们这里主要在语言层面漫游。
  这里的比较,没有贬低哪门语言的意思,旨在客观指出各自的特点。
  Go 和 Java 都是 C 系语言,但 Go 更接近 C,包括风格、库等。  01 Go 是编译型语言,而 Java 是半解释的
  与 C/C++ 一样,Go 语言源码会直接编译成目标计算机体系结构的机器语言。而 Java 源码编译成虚拟机语言,即字节码,并由 Java 虚拟机(JVM)进行解释(interpreted)。为了提高性能,字节码通常在运行时被动态编译成机器语言。JVM 本身是为特定的操作系统和硬件体系结构构建的。
  而且 Go 是静态编译,一旦编译完成,Go 程序只需要一个操作系统就可以运行。Java 程序在运行之前需要计算机上安装有 JRE(特定版本)。许多 Java 程序可能还需要额外的第三方代码。
  所以,虽然 Go 和 Java 都是跨平台的,但实现形式还是很不一样的。  02 Go 和 Java 程序结构类似
  这两门语言都支持包含方法和字段的数据结构的概念。在 Go 中,它们被称为 struct(结构体),而在Java中,它们被称为 class(类)。这些结构被收集到称为包(package)的分组中。在这两门语言中,包都可以分层排列(即嵌套包)。
  Java 包顶层只包含类型声明。Go 包括各种声明,如变量、常量、函数以及派生类型声明。
  两门语言都通过导入(import)来访问不同包中的代码。在 Java 中,可以选择使用导入的类型(String 或 Java.lang.String)。在 Go 中,所有导入的名称必须始终是限定的(虽然可以本地导入,但不建议使用)。  03 Go 和 Java 代码风格的差异
  这方面涉及到的内容不少,无法一一列出。这里提一些:
  1)Go 与众不同,变量声明,类型放在后面。语言通常省略分号。
  Java:int x, y, z;
  Go:var x, y, z int
  2)Java 方法只能返回一个值。Go 函数/方法可以返回许多值。
  3)Java 方法和字段必须在它们所属的类型内声明。Go 方法是在所属类型之外定义的。Go 支持独立于任何类型的函数和变量。Java 没有真正的静态共享变量;静态字段只是某些类(相对于实例)的字段。Go 支持在可执行映像中分配的真正静态(全局)变量。
  4)Java 只允许其他类型(类、枚举和接口)的类型扩展,而 Go 可以基于任何现有类型创建新类型,包括基本类型(如整数和浮点)和其他用户定义的类型。Go 可以支持这些自定义类型中的任何一种。
  5)Go 和 Java 接口的工作方式非常不同。在 Java 中,类(或枚举)实现接口时,必须显式指定。在 Go 中,任何类型都可以通过实现接口的方法来实现接口,即隐式实现接口,所谓的鸭子类型。
  6)Java 通过 try/catch 处理异常。Go 中是 error,另外有 panic 和 recover。  04 Java 是面向对象语言,而 Go 不完全是
  面向对象的三大特性:封装、继承和多态。
  Go 没有继承的概念,认为组合优于继承。不过,在 Go 中,可以通过内嵌来模仿部分类似继承的功能,但本质还是组合。
  此外,Go 只在接口层面有多态,没有方法重载。  05 Java 不少特性是基于 Annotation 的,Go 没有 Annotation
  许多 Java 库(特别是框架,比如Spring),都充分利用了 Java 的注解(Annotation)。注解提供元数据(通常在运行时使用),以修改库提供的行为。Go 没有注解,因此缺少此功能。Go 可以使用代码生成(go generate)获得与注释类似的结果。Go 有一种简单的注解形式,称为 tag,可用于自定义某些库行为,如 JSON 或 XML 格式。  06 Go 和 Java 都使用 GC 管理内存
  这两门语言都使用 stack 和 heap 来保存数据。栈主要用于函数局部变量,堆用于其他动态创建的数据。在 Java 中,所有对象都在堆上分配。在 Go 中,堆上只分配可在函数生命周期之外使用的数据(通过逃逸分析确认)。在 Java 和 Go 中,堆都是垃圾收集的;堆对象由代码显式分配,但总是由垃圾收集器回收。
  Java 没有指向对象的指针的概念,只引用位于堆中的对象。Go 允许访问指向任何数据值的指针(或地址)。在大多数情况下,Go 的指针可以像 Java 引用一样使用。
  Go 的垃圾收集实现比 Java 的更简单,通常 Go GC 需要调优的情况较少(没有太多选项可配置)。  07 Go 和 Java 都支持并发,但方式不同
  Java 有线程(Thread)的概念。而 Go 是 Goroutine,它是由语言提供的。Goroutine 通常被称为轻量级线程。Go 运行时支持使用比 JRE 支持的线程多得多的 Goroutine。
  Java 支持同步控制。Go 具有类似的库函数。Go 和 Java 都支持跨 Thread/Goroutine 安全更新的原子值的概念。两者都支持显式锁定库。
  Go 提供了通信顺序进程(CSP)的概念,作为 Goroutine 在没有显式同步和锁定的情况下进行交互的主要方式。Goroutine 通过 channel 进行通信,channel 是有效的管道(FIFO 队列),通常与 select 语句相结合使用。  08 Go 运行时比 JRE 更简单
  Go 的运行时比 JRE 提供的运行时小得多。没有 JVM 等价物,但两者中都存在类似的组件,如垃圾收集。Go 没有字节码解释器。
  Go 拥有大量的标准库。Go 社区提供了更多库。但是 Java 标准库和社区库在功能的广度和深度上都远远超过了当前的 Go 库(毕竟 Java 比 Go 早太多年了,而且生态确实好)。尽管如此,Go 库仍然足够丰富,可以开发许多有用的应用程序,特别是服务端程序。
  所有使用过的库都会嵌入到 Go 可执行文件中,即前面提到的静态编译。可执行文件是运行程序所需的一切(而 Java 库在首次使用时动态加载)。这使得 Go 程序二进制文件通常比 Java 二进制文件(单个 "main" 类)大,但当加载 JVM 和所有依赖类时,Java 的总内存占用通常更大。  09 Go 程序的构建过程是不同的
  Java程序是在运行时构造的类的合并,通常来自多个源(供应商)。这使得Java程序非常灵活,特别是当通过网络下载时。Go 程序是在执行之前静态构建的。启动时,可执行映像中的所有代码都可用。这提供了更大的完整性和可预测性,部署特别方便,但牺牲了一些灵活性。这使得 Go 更适合集装箱化部署。
  Go 程序通常由 "go builder" 构建,这是一种结合了编译器、依赖项管理器、链接器和可执行构建器等的工具。它包含在标准 Go 安装中。Java 类被单独编译(由 Java 开发工具包(JDK)提供的 javac 工具编译),然后通常被组装成包含相关类的归档文件(JAR/WAR)。程序是从一个或多个存档中加载的。档案的创建,特别是包括任何依赖项,通常由独立于标准 JRE 的程序(如 Maven)完成。
  其他方面,比如 Java 和 Go 都是过程式语言,此外,在函数式编程方面,Go 一开始,函数就是一等公民,而 Java 8 才有较好的支持。

荣耀60和小米10S,价格差不多如何选择?建议选择小米10S,综合素质更高。1骁龙870三件套的性能基础比荣耀60骁龙778G好一个档次,而性能是决定手机使用时间长短和流畅度的关键配置。2小米10S主摄一亿像素比荣耀60的平时喜欢打游戏,买了iQOO9,性能拉满,打游戏贼爽平时喜欢打游戏,在朋友的推荐下入了iQ009传奇版,不知道有没有和我一样偏爱直屏的手游玩家哈,直屏玩游戏的优势真的是曲面屏给不到的。手游玩家应该都知道,直屏手机屏幕正面遮挡少,游戏等等党注意了!小鹏汽车官宣涨价13月18日,快科技从小鹏汽车官方获悉,其将对旗下在售车型进行价格调整。具体信息如下受上游原材料价格持续大幅上涨影响,小鹏汽车将对在售车型的价格进行调整,补贴前售价的上调幅度为101甲醇汽车来了,你怎么看明显,短时间内纯电动车全面替代燃油车是不现实的,也是不科学的。然而碳中和犹如达摩斯之剑悬在各个车企头上,推动着车企拼命寻找降低碳排放的方法,其中有发展氢能源的,也有发展甲醇汽车的。路由器品牌排行榜前十名路由器品牌哪个好?创建于1996年,大型网络通讯设备供应商,致力于为大众提供便利的本地局域网络互联和Internet接入手段。TPLINK产品涵盖以太网无线局域网宽带接入电力线通信安防监控等主要领域为什么小米和红米用同一款处理器的手机,价格却差距这么大?除了处理器以外的地方,都使劲节约成本(缩水)举例来说五个地方。1,先说外观方面,电池盖,塑料的几块钱玻璃的三十多,手机中框也是这样铝合金的贵塑料中框便宜。2,还有手机屏幕,你看上去RedmiK50Pro配置强劲价格合理,但是缺点也很明显RedmiK50系列的第二场发布会,发布了多款产品,其中包括了笔记本电视手机等产品,但最热门的还是K系列的手机,在这次发布会当中一共发布了3款手机,分别是RedmiK40SRedm近期小米手机如何去选这三款性能强配置诚心价格不贵不超过3000元华为手机受芯片的制裁,市场老大哥的地位也慢慢在失去,小米OPPO等等其他国产品牌也开始崛起,特别是小米手机,小米手机一直都是高性价比的代名词,基本每款都是高配低价,深受很多朋友的喜车企扎堆涨价!造车新势力价格屠夫零跑扛不住了官宣涨价自从去年新能源汽车爆发以来,电池上游原材料价格暴涨,以及芯片短缺引起的零部件供应价格波动,蔓延至整车企业后,导致近段时间国内新能源汽车涨价成风。特斯拉8天涨价3次,比亚迪也官宣涨价2022年换手机首选这3款,口碑好性能强价格很良心,还能再用4年时间已经来到了3月份,不少新机都已经发布,旧款手机也迎来了一波降价。新机的发布又让人看得眼花缭乱,2022年想换手机,不妨先看看这3款,口碑好性能强价格很良心,用个4年不是问题,闭最低2999,这3款电摩最大续航200km,动力大提速快,适合外卖小哥对于普通车主来说,电动车只是交通工具,但是对于外卖小哥来说,电动车是他们的饭碗,所以一辆动力足,续航远,提速快的电动车是很重要的。小编找到了3款电摩,正好能够满足这几点要求,而且价
最新消息郑州3号线二期工程轨道安装开始招标了郑州市轨道交通3号线二期工程轨道安装招标公告1。招标条件郑州市轨道交通3号线二期工程轨道安装,已由豫发改基础2019819号文批准建设,招标人为郑州地铁集团有限公司,建设资金来自政应该在知足中过好你的每一天人生,总是在经历过后才懂得,失去以后才珍惜,错过之后才懊悔,对比之后才明白。曾经车水马龙,人群熙熙攘攘,摩肩擦踵之间,只觉一切是寻常。仿佛生活就该如此模样,以为岁月就会一直如此静好方言,请别离我们而去十里不同音,百里不同俗,在过去人挑肩扛的年代里,信息和交通都不发达,我们的小山村相对比较封闭,人们在长期的生产生活中,就逐渐形成了自己独特的文化。在亘古绵长的岁月里,这种文化自然地这样回你微信的人,最值得你深爱人生最幸运的事情之一,就是遇到一个值得深爱的人,即便你们最后没有在一起,当你回想起这个人的时候,你心里更多的是幸福和惋惜。幸福源于曾经的回忆,惋惜这样一个人,没能陪你走到最后。其实电子商务对物流的影响近几年来,随着电子商务环境的改善以及电子商务所具备的巨大优势,电子商务受到了政府企业界的高度重视,纷纷以不同的形式介人电子商务活动中,使电子商务在短短的几年中以惊人的速度在发展。在科技加码,实力俱增纽恩泰商用变频热水新品发布数据显示,2021年上半年,商用热泵热水市场规模为8。68亿元,同比增长37。7。由于弥补了去年同期工程项目停滞带来的空缺,商用热泵热水产品的增长领先于其他产品。可以预见,商用热泵当风轻借力,一举入高空,纽恩泰3000终极实训中心刮起工匠之风宝剑锋从磨砺出,更强调安装技艺的空气源热泵两联供系统,将三分产品,七分安装的积极意义进一步凸显。在消费升级的时代窗口下,如何保障用户的舒适生活,正成为暖通行业的重要课题,走在市场发万名暖通技工实训班第二期落幕,纽恩泰持续塑行业工匠精神纽恩泰作为空气能行业领军品牌,致力于推进两联供市场健康发展,为培养暖通人才,以匠心成就精品工程,在3月末举行的万名暖通技工实训班第一期的圆满落幕可谓是做了漂亮的开门红,接踵而至的4顺势而为聚势而上,纽恩泰以实际行动助推两联供行业发展最近几年,两联供机组始终保持高速增长的态势。根据艾肯网统计,2021上半年,两联供机组的整体市场容量约为14亿元,历史上首次半年度总量超过10亿元,同比2020上半年增长55。6,如何打造城镇集中供暖新天地?河北赵县给你答案蓝天保卫战的阶段性胜利,再一次证明了空气源热泵用于北方清洁采暖改造的积极意义。建立在北方户式采暖改造成功经验的基础上,面对如今规模更大,范围更广的城镇集中式供暖区域,空气源热泵产品纽恩泰连续三年荣获广东省守合同重信用企业称号人无信不立,业无信不兴,守合同重信用是企业可持续发展的基石,也是对客户最好的承诺。只有以客户为中心,以诚信为根本,专注为客户创造价值,持续追求客户满意,企业才能长盛不衰,永远立于不