发表过的专栏文章
最近发表的话题
最近发表的评论
  • 一个指针变量可以指向任何一个值的内存地址,那为何还需定义成 var strP *string 或 var intP *int 呢? at 3天前

    指针用来存放某个类型变量的地址,这个指针根据变量类型分配该变量所占的空间大小,参考 C 语言中的指针运算作类比就很快能搞清楚这个问题,例如在如下代码中:

    #include <stdio.h>
    
    int main()
    {
        int a = 127;
        void *x = &a;
        int *y = &a;
        printf("x is void type, addr is %p and next is %p\n", x, x+1);
        printf("y is int  type, addr is %p and next is %p\n",y, y+1);
        return 0;
    }

    得到的结果

    x is void type, addr is 0x7ffee087bb88 and next is 0x7ffee087bb89
    y is int  type, addr is 0x7ffee087bb88 and next is 0x7ffee087bb8c

    可以看到,指向同一地址的指针,因为类型不一样,运算之后得到的下一个地址不一样。以上例子中 void 类型的指针为变量分配了 1 个字节的空间,而 int 类型的指针为变量分配了 4 个字节的空间,所以在做加 1 运算之后,void 地址增加了1,而 int 类型的增加了 4。回到 golang 中应该也是一样的道理,如果不指明指针类型,程序如何知道你要为这个变量分配多大的空间呢?

  • 为什么你需要学 Go? at 1个月前

    并发和并行的关系那里,之前我也搜了很多,看了一些云里雾里,后来去看《深入理解计算机系统》第三版里面的解释,我看了之后理解是这样的:并发囊括了并行,并行是并发的一种特殊形式,做事情的时候,时间线有重叠就是并行的。浅见,见笑。