C++,Python,Go对照学习-01

好吧其实学Go只是为了好玩,只是为了好玩,学习过程中不免会把其他我懂的语言的思维定势和习惯带进来,由此有了这篇对照学习的记录,就当是留下学习的脚印吧.
这里所提及的语言特性在C++指最新的C++11标准,Python指Python3.x(2.x没学),Go是最新的1.1


变量声明
Go中变量声明的时候顺序是 变量名 -> 变量类型,并且可以忽略变量类型又结果进行推断如 a := 5 这个时候a就是int类型
C++中变量声明的顺序是 变量类型 -> 变量名. 可以通过auto关键字推断出变量类型 如 auto a = 5; 这个时候a是int
Python中所有变量的声明都是不需要用关键字指定变量类型的

defer
在Go中defer关键字用于延迟一个函数或者方法的执行,它会在外围函数或者方法返回之前返回其值(如果有).我想表示的是,第一次使用它的时候感觉这家伙像极了shared_ptr,而且要比shared_ptr要轻便.
shared_ptr可以指定一个析构时的删除器,在删除器中可以作一些资源释放的事情,以确保不管是以何种方式离开作用域(正常离开,发生异常)都可以使得资源能够正确释放.
Python...额嗯你根本不知道资源什么时候能释放..


range
在Go中,range是一个关键字,它总是返回两个值,一个是下标一个是具体的值

func main() {
	list := []int{10, 11, 12, 13, 14, 15}
	for key, value := range list {
		fmt.Println("key:", key, "value:", value)
	}
}



输出:
key: 0 value: 10
key: 1 value: 11
key: 2 value: 12
key: 3 value: 13
key: 4 value: 14
key: 5 value: 15

Python中range则是一个函数返回一个从0开始指定长度的连续整数序列,听起来有点拗口来几个例子就了然了

a = range(0,10)
for value in a:
	print(value)



结果是0,1,2,3,4,5,6,7,8,9
c++中木有这货,但是C++提供了类似功能的范围迭代

int a[] = {0,1,2,3,4,5,6,7,8,9};
for(auto i : a)
{
    cout << i << " ";
}



//0 1 2 3 4 5 6 7 8 9


切片
额嗯Go中的切片和Python的大类.有Python基础很容易入门的说


并发
Go是语言本身支持并发而Python和C++都是以库的形式实现并发.在Go中实现并发真他妈的简单.......

这些只是其中的一部分,其他部分以后有时间再陆陆续续写吧.

posted @ 2013-08-05 20:02  坚固66  阅读(367)  评论(0编辑  收藏  举报