zoukankan      html  css  js  c++  java
  • 不一样的go语言-go缺少的语言特性

      相信很多从其他语言转向go语言的人,或者是几乎所有初学go语言的人(我相信目前还没有学校将go作为教学语言,所以未来的IT工程师的第一语言都不会是go),都会在学习的过程中将go与自己的第一语言、第二语言作比较,带着第一、第二语言的思维方式去学习go。同时会对go语言的一些看似“奇葩”的语法不解,这里我尝试向大家介绍go没有什么或者为什么没有。

    语法篇

    语法 示例(java) 说明
    三元操作符 boolean a = 2 > 1 ? true : false 这个有太多的讨论, 我也始终未能认同官方的观点。或许未来会在go2.0中加入新的语法来实现
    自增、自减 i++, i-- go认为自增、自减是一个语句而不是一个表达式, 所以a := i++ 不合法。作为语句,单独使用i++则合法, 但 ++i 不合法。语句与表达式的区别在于表达式可以求值,而语句不行。
    逻辑右移 2>>>1 即无符号右移
    泛型 Set s = new HashSet<>(8) go2.0计划加入泛型支持
    union - c语言的联合
    class public class A 类, go使用struct实现面向对象
    extend class A extends B 继承, go采用鸭子类型的方式实现继承
    多线程 new Thread() go使用协程
    函数重载 同名方法,参数不同(方法签名不同) 即overload,但go不支持,go2.0中有新的提案提及,但我不看好,重载虽然可以提高生产力,但确实会带来复杂性
    函数重写 父子类继承时,重写父类方法 即overide,go使用的是组合继承,任何方法的调用方都是明确的。

    数据结构篇

    数据结构 示例(java) 说明
    集合 Set s = new HashSet<>(8) 需要自行实现,反倒go提供了list、heap、ring的实现

      除了上述go没有的语言特性之外,go拥有的语言特性包括切片(又叫元组或切片)、多返回值、复数、协程、通道等。

    欢迎关注个人公众号

    不一样的go语言

  • 相关阅读:
    升/降压转换器 (Buck-boost)
    升压转换器 (Boost)
    降压转换器 (Buck)
    线性稳压器 (LDO)
    电源管理组件选择指南
    AC/DC 反激 (Flyback) 控制器
    SEPIC 单端初级电感转换器 稳压器 -- Zeta 转换器
    LT3759 宽输入电压范围升压 / 负输出 / SEPIC 控制器 可在输入电压低至 1.6V 的情况下工作
    LT1961 升压型稳压器造就了兼具升压和降压能力的扁平状SEPIC
    Level-shifting nixes need for dual power supply
  • 原文地址:https://www.cnblogs.com/laud/p/go_spec.html
Copyright © 2011-2022 走看看