作者回复: 谢谢你的鼓励!视频会一直持续更新的。
作者回复: 👍
作者回复: 我是视频中推荐的是采用指针的方式。第一种和和第二种视频中有说混,在视频最后我说明了一下,采用没有数据复制的写法。
作者回复: 看你传递的是不是指针,是指针就会。
作者回复: 这个是Go语言中比较令人困惑的部分, 1. 如果嵌入类型是结构,则从外部类型可以访问定义在结构及结构引用上的方法 2. 如果嵌入类型是结构的引用,则从外部类型仅可以访问定义在结构引用上的方法
作者回复: 原因是因为你是通过new创建的temp,所以temp其实是一个指针值,current复制了temp的指针(只是用了一个新的地址来保存这个指针值)所以他们同时指向的同一个ListNode 的实例。你改成 temp=ListNode{}试试
作者回复: 非指针传递会生成一个新的结构对象,其中每个成员会复制。指针传递,只是传递指针,且该指针指向原有结构。
作者回复: 请粘贴一下以上结果执行的代码。
作者回复: 看一下下面这个例子,你就会发现不要去使用defer来改变函数的返回。 package test_defer import ( "fmt" "testing" ) func EndByDefer() int { defer func() int { fmt.Println("defer is executed.") return 1 }() fmt.Println("running") return 2 } func TestReturnWithDefer(t *testing.T) { fmt.Println("The return is ", EndByDefer()) } 运行结果是: running defer is executed. The return is 2