zoukankan      html  css  js  c++  java
  • 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中实现并发真他妈的简单.......

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

  • 相关阅读:
    wireshark 导出所有filter出来的包
    ubuntu 14.04安装pypcap
    激活windows7 企业版小记
    ubuntu 14.04 以root权限启动chrome
    git clone Linux 源码并切换TAG
    ubuntu 14.04 ns2.35 ***buffer overflow detected **: ns terminated解决办法
    我离baidu.com有几跳
    linux tcp超时重传实现分析
    dpctl 工具使用
    由于log太多导致ubuntu硬盘空间满了,进入不了系统解决办法
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3239112.html
Copyright © 2011-2022 走看看