不一样的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语言-go缺少的语言特性的更多相关文章
- C语言和go语言之间的交互 - C语言中使用go语言,使用的go语言又使用了c语言
一.go语言中使用C语言 go代码中使用C代码,在go语言的函数块中,以注释的方式写入C代码,然后紧跟import “C” 即可在go代码中使用C函数 代码示例: go代码:testC.go 1 pa ...
- 为什么可以说Java语言是准动态语言?
什么是动态语言? 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化.比如JavaScript便是一个典型的动态语言. 除此之外如Ruby.Python ...
- JNI学习2:android 调用C语言方法与C语言调用android方法
#include <jni.h> #include <stdio.h> #include <stdlib.h> #include <jni.h> #in ...
- 【实习记】2014-08-19升级vim配置YouCompleteMe并debug的过程+qtcreator有语言包没法换语言
做了个小项目,有空闲可以做点事了. 偶然查资料看见YouCompleteMe的鼎鼎大名. 演示demo <img src="http://i.imgur.com/0OP4ood ...
- SQL语言学习-数据定义语言
Sql语言至今已经有6个版本.SQL查询语言包括了所有对数据的操作命令,这些操作可分为四类:数据定义语言(DDL).数据操纵语言(DML).数据控制语言(DCL)和嵌入式SQL语言. 数据定义语言(D ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
- 别致的语言GO(GO语言初涉)
最近由于各种原因(好吧,其实是犯懒)已经许久没有再写新的博文了!最近正好在学习一门新的语言,所以正好记录一下自己的学习成果!最近利用每天晚上下班回来后的几小时,学习了Google开发的Go语言,算是对 ...
- QT国际化示例, 检测系统语言,设置适合语言,按键切换显示语言
1.效果如下图,开启就自动检测系统语言,选择系统语言显示, UI有控件设置,在中文和英文之间切换.. 2. 源码 dialog.h #ifndef DIALOG_H #define DIALOG_H ...
- Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!
Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!
随机推荐
- WinDbg常用命令系列---||(系统状态)
||(系统状态) 简介 双竖线 ( || ) 命令将打印指定的系统或当前正在调试的所有系统的状态. 使用形式 || System 参数 System 指定要显示的系统. 如果省略此参数,将显示正在调试 ...
- gj的zabbix客户端开机自启动设置
查看是否自启动 配置chkconfig 启动服务
- python内置模块2
十五.shutil模块 ==================================================================== shutil模块是python为我们封 ...
- gulp+apache代理请求处理javascript跨域请求
apache设置(参考) 用 apache 的 mod_proxy 模块开启反向代理功能来实现: 1 修改 apache 配置文件 httpd.conf ,去掉以下两行前面 # 号 LoadModul ...
- C#访问https地址实例
程序访问的网址从http换成了https,安全性更高了,程序对网址的访问也要改一下 C#访问https地址实例如下 namespace ConsoleApp2 { public class Progr ...
- 【03NOIP普及组】栈(信息学奥赛一本通 1924)(洛谷 1044)
#include<bits/stdc++.h> using namespace std; int n,ans,m,k,ans2; ],f[],d[][],num[][],tmp[],s[] ...
- MSSQL手工注入 报错注入方法
例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1[1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show. ...
- C语言函数内局部变量释放的坑
首先把代码贴上来: #include <stdio.h> #include<windows.h> int f(int **iptr){ ; *iptr = &a; ; ...
- HttpClient 发送请求和参数
发送请求 没有参数 private static void getData() { String timeStamp = String.valueOf(System.currentTimeMillis ...
- Healthcare in Azure