golang编程之我见
golang编程之我见
学习了两个月的golang,语法算是基本掌握了,从一个C++程序员的角度,提出自己的几个看法吧。
1,没有一个好的包管理工具。
我在公司用的是glide的包管理,这个工具的好处就是可以根据git提交的hash值选择不同的版本。
问题有2个:
- 每次执行完glide init以后,需要在glide.yaml中手动修改版本号,否则可能会有API不兼容的问题。
- 因为有部分库需要从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编程之我见的更多相关文章
- Golang编程的工程管理
Golang编程的工程管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- 如何在VS Code中进行golang编程
在VS Code中编程 使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense,代码导航,符号搜索,括号匹配,片段等语言功能,这些功能将帮助您进行Golang开发. ...
- 开启Golang编程第一章
Go is an open source programming language that makes it easy to build simple,reliable, and effcient ...
- Golang核心编程
源码地址: https://github.com/mikeygithub/GoCode 第1章 1Golang 的学习方向 Go 语言,我们可以简单的写成 Golang 1.2Golang 的应用领域 ...
- Mac os安装golang开发环境
为了能够愉快地进行golang编程,我们需要安装以下几样东西: 包管理Homebrew 语言环境golang 版本管理git 虚拟器docker 编译器Goland 我将按照这个顺序叙述整个安装过程 ...
- Golang 受欢迎的原因:大道至简
前言 Golang自2009年发布第一个版本,2012年发布1.0版本.在这10年的时间里,不断有开发者加入Golang的阵营中,不断共建Golang生态.其中比较有代表性的Golang编写软件作品是 ...
- go-面向对象编程(下)
面向对象编程思想-抽象 抽象的介绍 我们在前面去定义一个结构体时候,实际上就是把一类事物的共有的 属性( 字段)和 行为( 方法)提取 出来,形成一个 物理模型(结构体).这种研究问题的方法称为抽象 ...
- Golang协程实现流量统计系统(1)
# 学习内容: # 学习目标: 学习Golang的基础开发 常用的Golang编程技艺 精巧省力的Go Lib 协程的真实应用实践 与其他语言对比着学 协程并发模型的深度应用 Growth hacki ...
- go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...
随机推荐
- python和selenium
错误提示: selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set ...
- 洛谷P1029 最小公约数和最大公倍数问题【数论】
题目:https://www.luogu.org/problemnew/show/P1029 题意: 给定两个数$x$和$y$,问能找到多少对数$P$$Q$,使得他们的最小公约数是$x$最大公倍数是$ ...
- POJ 2299 Ultra-QuickSort 离散化加树状数组求逆序对
http://poj.org/problem?id=2299 题意:求逆序对 题解:用树状数组.每读入一个数x,另a[x]=1.那么a数列的前缀和s[x]即为x前面(或者说,再x之前读入)小于x的个数 ...
- hbase本地模式-安装及基本测试
解压缩hbase二进制安装文件到/opt目录下: #tar -zxvf hbase-0.98.6-cdh5.3.6.tar.gz -C /opt/cdh-5.3.6/ 编辑配置文件,这里仅配置数据目录 ...
- manifold 微分流形上可以定义可微函数、切向量、切向量场、各种张量场等对象并建立其上的分析学,并可以赋予更复杂的几何结构以研究它们的性质。
小结: 1.流形(英语:Manifolds)一般可以通过把许多平直的片折弯并粘连而成,是局部具有欧几里得空间性质的空间,是欧几里得空间中的曲线.曲面等概念的推广 2.描述一个流形往往需要不止一个“地图 ...
- 内存管理 垃圾回收 C语言内存分配 垃圾回收3大算法 引用计数3个缺点
小结: 1.垃圾回收的本质:找到并回收不再被使用的内存空间: 2.标记清除方式和复制收集方式的对比: 3.复制收集方式的局部性优点: https://en.wikipedia.org/wiki/C_( ...
- [daily] SNAT和DNAT
SNAT,DNAT,MASQUERADE都是NAT MASQUERADE是SNAT的一个特例 SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包 ...
- 查找->动态查找表->平衡二叉树
文字描述 平衡二叉树(Balanced Binary Tree或Height-Balanced Tree) 因为是俄罗斯数学家G.M.Adel’son-Vel’skii和E.M.Landis在1962 ...
- 下载JDK和Jmeter并设置系统环境变量
一.JDK下载并设置系统环境变量 1.JDK官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 点左边的 ...
- LeetCode 961 N-Repeated Element in Size 2N Array 解题报告
题目要求 In a array A of size 2N, there are N+1 unique elements, and exactly one of these elements is re ...