使用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,语言切换完成, ...
随机推荐
- 转: 微博的多机房部署的实践(from infoq)
转: http://www.infoq.com/cn/articles/weibo-multi-idc-architecture 在国内网络环境下,单机房的可靠性无法满足大型互联网服务的要求,如机房 ...
- Part 14 ng hide and ng show in AngularJS
ng-hide and ng-show directives are used to control the visibility of the HTML elements. Let us under ...
- Part 2 Creating, altering and dropping a database
A SQL Server database can be created, altered and dropped1. Graphically using SQL Server Management ...
- C# 匿名方法及Lambda表达式
1.匿名方法 定义:匿名方法不能直接在类中定义,而是在给委托变量赋值的时候,需要赋值一个方法,此时可以“现做现卖”,定义一个匿名方法传递给该委托. 举实例说明: 实例一:无参数,无返回值的一个匿名方法 ...
- 在浏览器中打开本地应用(iOS)
在浏览器中点击跳转到本地应用的方法(如果本地没有安装的话) 然后在浏览器中输入tianxiang://就能打开这个应用了 ................省略 遇到一个12年还是初中的小朋友,
- Swift优雅的实现枚举的定义及使用
1.枚举是用来表示值的“类型”. 2.定义枚举类型“FamilyRelationshipType” enum FamilyRelationshipType { case GrandFather cas ...
- Python的functools.reduce用法
python 3.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce. reduce的用法 reduce(fun ...
- path 环境变量
path(环境变量)是dos以前的内部命令,windows继续沿用至今.用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找.一般设定java的时候为了在任何目录下都可以运行 ...
- 杭电ACM2080--夹角有多大II
http://acm.hdu.edu.cn/showproblem.php?pid=2080 /* //Author:nunu // #include <stdio.h> #include ...
- Codevs 1014 装箱问题
题目描述 Description 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数). 要求n个物品中,任取若 ...