前两天我说过为了学习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语言后的感受的更多相关文章

  1. ORA-01843: 无效的月份,执行sql语句更改为美国语言后仍然失败的解决办法

    ORA-01843: 无效的月份失败的 sql 为:XXXXXXXXXXXXXXXX 执行sql语句更改为美国语言后仍然失败, ALTER SESSION SET NLS_DATE_LANGUAGE= ...

  2. 面试 3-5年Java开发后的感受

    在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架,我相信其它公司招初级开发时,应该也照着这个标准来面 ...

  3. 〖Android〗Android App项目资源字符串检查(检查是否缺少对应的翻译,导致系统切换语言后崩溃)

    Android项目开发过程中,容易出现缺少对应中英文翻译的情况,这个Python脚本是用于检查字符串是否缺少了对应的翻译 #!/usr/bin/env python # encoding: utf-8 ...

  4. Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序

    实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...

  5. 爆零后的感受外加一道强联通分量HDU 4635的题解

    今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...

  6. Go语言开发

    Go语言圣经(中文版)     Go编程语言规范 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇           Go开发工具 Go命令行操作命令详细介绍 ...

  7. [转]AngularJs 多语言的使用 angular-translate

    本文转自:http://www.tuicool.com/articles/zeymimB 随着世界各地Web访问量的增加,作为开发者的我们也在不断让应用国际化.本地化.当用户访问我们的应用时,他应该能 ...

  8. C语言I—2019秋作业02

    1.[新增内容] 这个作业属于那个课程 C语言程序设计 这个作业要求在哪里 <C语言I-2019秋作业02> 我在这个课程的目标是 这个作业在那个具体方面帮助我实现目标 <实现一些基 ...

  9. Android app应用多语言切换功能实现

    最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果 和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成, ...

随机推荐

  1. 实现toolbar透明的背景效果

    //MyToolbar.h 头文件 @interface MyToolbar : UIToolbar @end //MyToolbar.m 实现文件 #import "MyToolbar.h ...

  2. codevs4600 [NOI2015]程序自动分析==洛谷P1955 程序自动分析

    4600 [NOI2015]程序自动分析  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在实现 ...

  3. Matlab之画图

    1.设置对数坐标 set(gca,'XScale','log','YScale','log'); 2.加网格 grid on; 3.加log对齐网格 set(gca,'XScale','log','Y ...

  4. django 学习-12 Django表单 初步

    1.先创建项目和应用 django.admin.py    startproject   cs cd cs django.admin.py   startapp   blog 2.vim  setti ...

  5. 《转载》两个activity界面间跳转切换动画效果

    1overridePendingTransition Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出 ...

  6. c#中进程的使用

    C#的Process类的一些用法 更多0   c#   进程 c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 usin ...

  7. ORACLE的分组统计之CUBE(二)

    cube统计包含了rollup的统计结果,而且还有其他组合分组结果(小计),CUBE(n列),那么分组种类有: cube分组就是先进行合计(一个不取),然后小计(到),最后取标准分组. 与rollup ...

  8. ubuntu将默认中文改成英文

    找到/etc/default/locale下面的文件,使用vim打开 将看到内容为: LANG=”zh_CN.UTF-8″ LANGUAGE=”zh_CN:zh” 改为 LANG=”en_US.UTF ...

  9. Centos6的VSFTP服务器配置使用教程

    Centos 6 的VSFTP 关闭SELinux,在终端机输入 vi /etc/selinux/config SELINUX=enforcing 改成 SELINUX=disabled 关闭seli ...

  10. (转)LR监控Linux系统性能计数器详解

    从LR里面add measurement,填写linux机器的IP,出现所有unix/linux的计数器,包括cpu的,mem的,disk,network的.这里介绍几个常用的: (对于如何监控Lin ...