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. hadoop源码学习(-)

    这是从hadoop源码中间截取的一个片段,你看看你能不能看懂:如果不能看懂,说明你的javase基础很差. private static class GroupFactory extends Coun ...

  2. day_6.6 py

    Tftp 下载器演示 2018-6-6 14:11:09 #!/usr/bin/env python #!--*--coding:utf-8 --*-- #!@Time :2018/6/6 11:55 ...

  3. php foreach

    工作半年了我一直以来至知道这样用,foreach($aa as $k=>$r){} 尔今天师父已教我还可以这样用:  foreach($aa as $r){}

  4. authentication plugin caching_sha2

    操作系统:windows 10 mysql版本:mysql  Ver 8.0.11 for Win64 on x86_64 (MySQL Community Server - GPL) 安装完mysq ...

  5. [No0000141]Outlook,设置全局已读回执

    Outlook,设置全局已读回执 文件->选项

  6. bilibili的直播第三方IJKMediaFramework.framework下载打包使用教程

    参考和引用的地址: http://www.code4app.com/thread-8941-1-1.html http://blog.csdn.net/cccallen/article/details ...

  7. [daily] 使用diff和patch打补丁

    diff org new > xxx.patch patch /path/org xxx.patch /path/org是相对路径时, 会报错. 这是一个bug.

  8. jquery-- json字符串没有自动包装为 json对象

    jquery 的一个坑 页面使用 ajax ,回调函数中获取后端返回的 json 格式数据(ajax 未显式指定返回值类型),后端controller方法标注 @ResponseBody 并返回一个 ...

  9. LeetCode 929 Unique Email Addresses 解题报告

    题目要求 Every email consists of a local name and a domain name, separated by the @ sign. For example, i ...

  10. 20165225《Java程序设计》第四周学习总结

    20165225<Java程序设计>第四周学习总结 1.视频与课本中的学习: 继承(extends) 重写 对象的上转型对象 super final instanceof运算符 abstr ...