前两天我说过为了学习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. 转:云风skynet服务端框架研究

    转:  http://forthxu.com/blog/skynet.html skynet是云风编写的服务端底层管理框架,底层由C编写,配套lua作为脚本使用,可换python等其他脚本语言.sky ...

  2. centos 6.5 安装lnmp(linux+nginx+mysql+php)

    参考:http://www.cnblogs.com/AloneSword/archive/2013/03/18/2966750.html (总结并简要) 一安装cmake wget -c http:/ ...

  3. 深入浅出ExtJS 第二章 Ext框架基础

    2.1 面向对象的基础架构(对象模型) 2.1.1 创建类 >.定义一个类: Ext.define('demo.Demo',{ name:'Lingo', hello:function () { ...

  4. 正则表达式删除指定的HTML 标签

    1.抓取某网页的数据后(比如描述),如果照原样显示的话,可能会因为它里面包含没有闭合的HTML标签而打乱了格式,也可能它里面用了比较让人 "费解" 的HTML标签,把预订的格式搅乱 ...

  5. Android应用数据备份

    在Android上可以很方便地管理数据备份,那些不慎丢失设备的用户会对该功能感激不尽.备份数据会很安全地存储在云端,并且只在具有相同谷歌ID设备上恢复数据. 下面是典型的AndroidManifest ...

  6. IntentFilterDemo

    intent-filter示例: <activity android:name=".CustomActivity" android:label="@string/t ...

  7. Part 6 Group by in sql server

  8. java中serializable

    java中serializable是一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的.因此如果要序列化某些类的对象,这些类就必须实现Serializable接 ...

  9. 一个简单的获取参数的jqure

    今天做项目的时候需要用到上一页面传递过来的参数(只要一个参数),其解决办法就是下面: char latter=location.search.split('=')[1] 以上直接获取到第一个参数的值为 ...

  10. OC9_代理正向传值

    // // ProtectedDeleagate.h // OC9_代理正向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) ...