为什么Python不支持函数重载?
结论:因为这会违背Python之禅:Simple is better than complex.
函数重载,意味着,在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。如果Python这样做,将会对新手,甚至是老手都会很不友好,而且这样做是极反人类的。换位思考,如果你是行为人,想要找行政机关办事,如果有两个行政机关名字完全相同,结果分管不同职能,你会怎么想,是不是会觉得行政机关在不作为,是懒政!
因此,Python为了简单,放弃了很多其他语言没有的特性,这是我最欣赏Python的地方。
Python不了解,但是类似的Lua非常熟悉,Lua函数内可以直接解析调用参数的数量和类型,能够变相实现重载的功能,不需要写一堆同名函数来实现,本质上是一样的。
如何从PHP过渡到golang?
PHP与GO虽然都叫编程语言,但其实它们之间的差别还是挺大的;
PHP的特点在与WEB编程,而GO的特点在于并发;
如果你有C或者C++的基础,去学习GO应该没有什么障碍
反之,如果没有写过 C 或 C++ 的话,不建议直接学 Go, 因为没写过 C/C++ 的话,很难理解 Golang 的优势在哪里;
最后就是你在学习GO的时候,最后把PHP赶出你的脑子,完全忘记它..
从语言本身特点来看,Go 是一种非常高效的语言,高度支持并发性,Go 语言的本身,它更注重的是分布式系统,并发处理相对还是不错的,比如广告和搜索,那种高并发的服务器。
Go语言优点:
- 性能优秀,可直接编译成机器码,不依赖其他库,Go 极其地快。其性能与 Java 或 C++相似。
- 语言层面支持并发,这个就是Go最大的特色,天生的支持并发,Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
- 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC。
- 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等。
- 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大,我最爱的也是这部分。
- 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难。
- 跨平台编译,快速编译,相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势
身为一个使用golang的开发人员,我的技术路线是从java到python,中间也学过一些php,直到现在在用golang+vue写web应用,这样一路走过来的,但我感觉golang还是比较好学的。
1)易学,易上手,语法简单,没有那么多糖,语法比较好记,基本看一遍就懂了。
2)文档清晰,自带的库文档非常清晰,就算第一次使用直接看函数上面的文档就会用了,可以边写边学。
曾经觉得python就比较简单好学,但学过golang之后,发现golang更容易上手。
我一般学新语言的时候先看一下变量、条件、循环、函数、数组、对象等等这些基本的信息然后做一个简单的小程序,就可以上手了,比如我做的第一个golang程序就是爬虫。
这些完成之后再学一下框架,去github上找个带文章的例子,自己看一遍基本就会了。
总的来说golang的学习成本还是很低的,但要精通还是需要一定的时间去积累。
您好,您这个问题应该包含两个方面。一个是php程序员如何转成golang程序员,一个是php项目如何转换成golang项目。
对于php程序员来说,如果之前接触过c语言,或者阅读过php底层源码的话,那么学习golang会容易一些,golang继承了c语言的一些特性,同时又简化了它的使用。
golang首先它是编译型语言,这和php这种解释型语言有着本质的区别,之前很多在php中需要运行时才能检查出来的错误,现在在编译期都能查询出来。
php的关键字很少,语法也很简洁,但是它有些概念和使用方法需要深入理解,对于goroutine,对于channel,对于并发,你需要深入研究才能够初探它的皮毛,而要深入了解,你这需要源码一层去一窥全貌。
对于php项目过渡到golang项目,你会发现节省了大量服务器资源。
在golang这种常驻内存的语言中,是有线程池的概念的,如果你接触过swoole,你可能会理解一些,如果没接触过,也没有关系,你只需要知道在将php项目转换成golang项目的过程中,你不仅仅只是要注意代码的转换,思路的装换更重要。
在使用php的时候,我们并不需要过多考虑资源的回收利用问题,因为每一次请求都是独立的进程来完成的,两次请求之间并不会共享资源。而在golang中,我们就需要考虑线程并发问题,考虑锁的问题。
可以说golang是吸取了c,java,python的优点,然后集百家之长而创造出的一门编程语言,它本身有自己的缺点,但是它的优点毋庸置疑,它让编程变得更加简单,让代码运行效率变得更高效,让编写代码变得更加容易。
总结
无论学习任何一门编程语言,你都需要大量的实践才能掌握,很多技巧你只是学习语法是掌握不到的,你只要不断地从项目中吸取经验,多看一些项目,你才能一点点地进步。
golang相比于其它编程语言诞生的时间不算太长,没有过多的历史包袱,因此现在学习它是最好的时机,毕竟一门编写代码简单,运行效率又高的语言还是很有吸引力的。
还没有评论,来说两句吧...