使用go语言后的感受
前两天我说过为了学习go语言去学习了一遍python,当我完成了python的学习后,昨天中午就去学习了go语言。以下简称之为golang。
我用的操作系统是windows xp,golang对xp还提供支持,但是我在学习python3时,3.5版本的python已经不给xp提供支持了。我在http://gobyexample.com学习了golang的相关代码,我不知道里面的语法全不全。其次,golang的本质是一种静态类型的语言,但它在编写时又可以写成动态类型语言的声明,这可以说是一次静态语言的革命。
下面我来谈谈我对golang的感受。
第一,我感觉golang的语法确实像python,使用起来令人感觉舒适,方便快捷。例如:
// 声明 --类python
a := 10 // a在编译时刻会被自动转换成int类型 // 语法 -- 类C
for i := 0; i < 10; i++ {
// do something here
}
第二,golang的自由度高、代码简洁,例如:
// 声明一个int类型的变量有3种方法
var v = 10
var v int = 10
v := 10 // 声明一个常量则有2种方法
const v = 10
const v int = 10 // 循环的用法 -- for就行了
for True {
// 类似C中的while循环
}
for {
// 上例的 for True缩写版
}
for i := 0; i < 10; i++ {
// 类似C中的for循环
}
第三,我认为golang语言的目的性不强,严格的说是一个令人感到乱糟糟的语言,看下列代码:
// golang循环示例
for i := 0; i < 10; i++ {
} /*
* 初看到上面的代码,令我们觉得没有什么不对的,但是学习之后,才会知道端倪。
* 问题1、其中的 i++不能改成++i,golang中不支持++i这样的操作符
* 问题2、大分号不能另起一行
* 问题3、若循环中只有一行代码,"{" 、"}"不能不写
*/ // golang简单示 do while循环示例 -- 用for 实现
var i = 0
for {
// do something there
if i >= 10 {
break
}
i++
} /*
* 与上面的说法一样,不学时不知道水有多深
* 问题1、支持i++操作符但是不支持写成这样 if i++ > 10
* 问题2、不如do while循环简洁、好看
*/
以上的例子说明了golang又还是一个自由的语言!不仅如此,golang还不能容纳多余的语句:
pacakge main import "fmt"
import "math" func main() {
var i int = 9
var j int = 10
fmt.Println(i)
} /*
* 编译时报错:imported and not used: "j"
* imported and not used: "math"
* 除此之外,golang还要变态地与packge xxx开头,而且main()函数中不能放置任一个参数和不能声明任何返回值和返回任何的值。
*/
golang最终给我的感受是一团糟,至此,我认为golang虽然简洁,但它并不是一门优秀的编程语言。
使用go语言后的感受的更多相关文章
- ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法
ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE= ...
- 面试 3-5年Java开发后的感受
在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面 ...
- 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)
Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 #!/usr/bin/env python # encoding: utf-8 ...
- Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序
实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...
- 爆零后的感受外加一道强联通分量HDU 4635的题解
今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...
- Go语言开发
Go语言圣经(中文版) Go编程语言规范 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇 Go开发工具 Go命令行操作命令详细介绍 ...
- [转]AngularJs 多语言的使用 angular-translate
本文转自:http://www.tuicool.com/articles/zeymimB 随着世界各地Web访问量的增加,作为开发者的我们也在不断让应用国际化.本地化.当用户访问我们的应用时,他应该能 ...
- C语言I—2019秋作业02
1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...
- Android app应用多语言切换功能实现
最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...
随机推荐
- 转:云风skynet服务端框架研究
转: http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sky ...
- centos 6.5 安装lnmp(linux+nginx+mysql+php)
参考:http://www.cnblogs.com/AloneSword/archive/2013/03/18/2966750.html (总结并简要) 一安装cmake wget -c http:/ ...
- 深入浅出ExtJS 第二章 Ext框架基础
2.1 面向对象的基础架构(对象模型) 2.1.1 创建类 >.定义一个类: Ext.define('demo.Demo',{ name:'Lingo', hello:function () { ...
- 正则表达式删除指定的HTML 标签
1.抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 "费解" 的HTML标签,把预订的格式搅乱 ...
- Android应用数据备份
在Android上可以很方便地管理数据备份,那些不慎丢失设备的用户会对该功能感激不尽.备份数据会很安全地存储在云端,并且只在具有相同谷歌ID设备上恢复数据. 下面是典型的AndroidManifest ...
- IntentFilterDemo
intent-filter示例: <activity android:name=".CustomActivity" android:label="@string/t ...
- Part 6 Group by in sql server
- java中serializable
java中serializable是一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序列化某些类的对象,这些类就必须实现Serializable接 ...
- 一个简单的获取参数的jqure
今天做项目的时候需要用到上一页面传递过来的参数(只要一个参数),其解决办法就是下面: char latter=location.search.split('=')[1] 以上直接获取到第一个参数的值为 ...
- OC9_代理正向传值
// // ProtectedDeleagate.h // OC9_代理正向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) ...