• 青鸟飞鱼
    2022-03-07
    看完整个专栏,只能说一句,老师来极客时间开专栏,太晚了,期待新课

    作者回复: 感谢支持!

    
    6
  • ly
    2022-03-01
    看完老师的课,对go的喜欢又多了一分,老师能不能出一门实战的课,系统设计加代码实现,感觉就这一门看不过瘾

    作者回复: 感谢支持👍。后续是否有课程,尚不确定:)

    共 2 条评论
    5
  • xiaoru
    2022-03-17
    二级指针例子中foo函数返回会栈桢空间不是应该被回收吗?为什么还能取到b中的值?

    作者回复: foo函数中的变量b不会被分配在栈上,会在堆上分配。这个go编译器会做逃逸分析(escape analysis)。

    
    4
  • 五彩斑斓的輝
    2022-05-23
    指针无论是在 Go 中,还是在其他支持指针的编程语言中,存在的意义就是为了是“可改变”。在 Go 中,我们使用 *T 类型的变量调用方法、以 *T 类型作为函数或方法的形式参数、返回 *T 类型的返回值等的目的,也都是因为指针可以改变其指向的内存单元的值。 可改变,怎么理解啊?如果不用指针也是可以改变的吧?

    作者回复: 这里可能表达不清。主要要表达的意思是通过指针传递参数与非指针传递参数的差别。非指针传递 改变的是拷贝,而不是原变量。

    共 2 条评论
    2
  • lesserror
    2023-05-27 来自广东
    tony bai 老师,文中的这句话:“如果我们需要跨函数改变一个指针变量的指向,我们就不能选择一级指针类型作为形参类型了。因为一级指针只能改变普通变量的值,无法改变指针变量的指向。” 没有太理解,我通过传递一个变量的指针到另外一个函数中,然后在另外一个函数中,用另一个变量的指针地址是可以赋值的,但是函数外,传递的变量的指针没有改变,不知道为什么? 这块能在解释一下么?

    作者回复: 按照你的问题,写了一个例子: package main func foo(p *int) { var b int = 55 p = &b } func main() { var a int = 5 var p *int = &a println(*p) // 5 foo(p) println(*p) // 5 } 在这个例子中,main中的p和foo的参数p完全是两个不同函数栈上的变量,虽然foo参数p指向的也是main函数的变量a。 foo函数可以等价于: func foo() { var p *int var b int = 55 p = &b } foo的参数就等价于其函数内声明的本地变量。 所以foo内对p的修改,与main函数中的p并无关系。

    
    1
  • lesserror
    2023-05-27 来自广东
    Tony bai 老师 ,文中有一处小错误。 在“多个指针变量可以指向同一个变量的内存单元的,这样通过其中一个指针变量对内存单元的修改,是可以通过另外一个指针变量的解引用反映出来的,比如下面例子:” 这段文字下面的代码中 : p2指向变量b所在内存单元 应该改为 p2指向变量a所在内存单元 的吧?

    作者回复: 的确是笔误,后续让编辑老师修改一下,感谢指出。

    
    1
  • crazyball
    2023-02-03 来自广东
    催更大白老师进阶或实战课~

    作者回复: :)

    
    1
  • Elroy
    2022-10-21 来自北京
    最开始看到课程的名字,误以为很基础,就随意翻了几篇感兴趣的看看,没想到干货满满,又从头看了一篇。讲的真好!

    作者回复: 👍😄

    
    1
  • piboye
    2022-10-09 来自北京
    go2 会把macro加回来吗?

    作者回复: macro?go好像从来没有考虑加上macro。

    
    1
  • 首思
    2022-07-12
    期待白老师出一个实战课

    作者回复: 嗯嗯。后续看是否有机会:)

    
    1