golang编程之我见

学习了两个月的golang,语法算是基本掌握了,从一个C++程序员的角度,提出自己的几个看法吧。

1,没有一个好的包管理工具。

我在公司用的是glide的包管理,这个工具的好处就是可以根据git提交的hash值选择不同的版本。

问题有2个:

  1. 每次执行完glide init以后,需要在glide.yaml中手动修改版本号,否则可能会有API不兼容的问题。
  2. 因为有部分库需要从google官方下载,需要fan qiang,每次都比较慢。

    不知道为什么golang不直接像python一样,在工具里直接自带包管理。或者像C++一样,直接由程序员来做包管理。

2.没有面向对象常用的继承、封装、多态。

golang作为一个在21世纪出现的编程语言,提供了interface和struct,却没有提供继承、封装和多态。

其继承关系由接口来表示,例如

//golang
type IParent interface {
func Print()
} type Son struct{
} func (s *Son)Print() {
fmt.Println("i am son")
}

示例代码中的Son即实现了IParent接口,不同于Python,Java,C++等明确的接口实现关系,golang的接口实现是隐式说明的。

如果Son和IParent在不同的源文件中,甚至在不同的库中,让程序员找出这个对应关系是对程序员不友好的。

3. 语言特性未使用到

作为一个服务器端开发人员,因为我们的系统采用微服务架构,所以每个服务程序的代码都非常的简短。但是在这个简短的代码里,我从来没有发现使用过 channel和go routine的代码。我不知道是这两个特性比较难,所以不用,还是因为我们的程序太简单所以用不到。作为一个C++程序员的时候,表示用不到template感觉就不像在写C++。

golang编程之我见的更多相关文章

  1. Golang编程的工程管理

    Golang编程的工程管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  2. 如何在VS Code中进行golang编程

    在VS Code中编程 使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense,代码导航,符号搜索,括号匹配,片段等语言功能,这些功能将帮助您进行Golang开发. ...

  3. 开启Golang编程第一章

    Go is an open source programming language that makes it easy to build simple,reliable, and effcient ...

  4. Golang核心编程

    源码地址: https://github.com/mikeygithub/GoCode 第1章 1Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2Golang 的应用领域 ...

  5. Mac os安装golang开发环境

    为了能够愉快地进行golang编程,我们需要安装以下几样东西: 包管理Homebrew 语言环境golang 版本管理git 虚拟器docker 编译器Goland 我将按照这个顺序叙述整个安装过程 ...

  6. Golang 受欢迎的原因:大道至简

    前言 Golang自2009年发布第一个版本,2012年发布1.0版本.在这10年的时间里,不断有开发者加入Golang的阵营中,不断共建Golang生态.其中比较有代表性的Golang编写软件作品是 ...

  7. go-面向对象编程(下)

    面向对象编程思想-抽象 抽象的介绍 我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的 属性( 字段)和 行为( 方法)提取 出来,形成一个 物理模型(结构体).这种研究问题的方法称为抽象 ...

  8. Golang协程实现流量统计系统(1)

    # 学习内容: # 学习目标: 学习Golang的基础开发 常用的Golang编程技艺 精巧省力的Go Lib 协程的真实应用实践 与其他语言对比着学 协程并发模型的深度应用 Growth hacki ...

  9. go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )

    go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...

随机推荐

  1. win10 远程出现身份验证错误 要求的函数不受支持

    win10的一个更新的bug 解决方案 http://note.youdao.com/noteshare?id=68aa9de9fbf46c50a097b3ccf7994580&sub=5AF ...

  2. C# MVC+EF—页面搭建

    上一篇文章搭建了基本结构,现在来搭建页面 一.新建控制器 Controllers=>添加=>控制器=>MVC 5控制器=>命名为DepartmentController pub ...

  3. apache中端口与目录的关系

    apache中,如果设置了监听了端口而没有配置对应的虚拟目录,则访问时会指向<Directory >节所指向的目录.

  4. [No0000115]打开Excel2016提示内存或磁盘空间不足的解决方法

    症状: 法一:右键文件,并 解除锁定: 法二: 在系统的服务中查看Windows Firewall服务 和Windows Update服务是否开启,如果没有开启就把他们启动一下. 1.在桌面的[计算机 ...

  5. JSCS: Please specify path to 'JSCS' package

    JSCS: Please specify path to 'JSCS' package 1.webStrom提示: JSCS: Please specify path to 'JSCS' packag ...

  6. hive优化之并行执行任务

    1.与Oracle并行技术一样,hive在执行mapreduce作业时也可以执行并行查询.针对于不同业务场景SQL语句的执行情况,有些场景下SQL的执行是需要分割成几段去执行的,而且期间并不全是存在依 ...

  7. TIC Read Status此类网络活动提醒隐藏

    这个方法会使得NSLog输出失效,printf正常工作 不推荐使用,应该是很多操作均被关闭,需要详细了解该参数意义 OS_ACTIVITY_MODE = disable

  8. Chap4:探究操作系统[The Linux Command Line]

    1 learn some more commands: (1) ls-List directory contents (2) file -Determine file type (3) less-Vi ...

  9. [hyperscan][pkg-config] hyperscan 从0到1路线图

    经过一系列的研究学习,知识储备之后,终于,可以开始研究hyperscan了. [knowledge][模式匹配] 字符匹配/模式匹配 正则表达式 自动机 [knowledge][perl][pcre] ...

  10. [knowledge] netmap

    900MHz的单核处理10GB的包收/发. netmap has been implemented in FreeBSD and Linux and Gbit/s network adapters. ...