• 评论了面试题 Go每日一题(104)
    注意在 go1.22 for range 循环已经不是地址复用了,而是重新创建。
  • 评论了面试题 Go每日一题(102)
    第一次的 change() 里面传入的是 slice=[1,2,0,0,0],len = 5,cap = 5,尽管 append() 修改了底层数组,但是 len,cap 不变,所以 slice 仍然...
  • 评论了面试题 Go每日一题(101)
    本来具备有疑惑:为什么 for range 循环拷贝的是 a 的副本,那什么修改a时会生效呢,自己认为 a 就是已经拷贝后的副本 答案:for range 拷贝的副本没有显式调用,也也就是其在 i,v...
  • 评论了面试题 Go每日一题(100)
    声明的函数变量是 nil,所以 defer f() 的时候,会报 panic:nil pointer;所以会执行第一个 defer,第一个 defer 当中,r += n,即 r= 3;后面 reco...
  • 评论了面试题 Go每日一题(99)
    for range 循环遍历时创建的是数据的副本,而不是创建引用,所以一个引用多个数据共用,起到地址复用的功能,且由于闭包保留的是引用,而在 go 中,for range循环没有函数调用的前提下是不会...
  • 评论了面试题 Go每日一题(98)
    可以正常结束,所以是 for range 循环在执行前会拷贝 v 的一份数据副本,即 for range 的循环次数是针对 该数据副本 的长度来的
  • 评论了面试题 Go每日一题(95)
    <a href="/interview/95#comment12" title="12">#12<span>楼</span></a> <a href="/user/L_ing" title="@L_i...
  • 有两种需要区分的切片声明方式,一种是 var s []int,这种叫做 nil 切片,底层数组是 nil,即没有依赖任何的底层数组。 一种是 s := make([]int),这种叫做空切片,底层数组...
  • 评论了面试题 Go每日一题(93)
    给 int 起了类型别名,但不影响其本身底层也是 int 类型,且常量声明使用 iota, 所以 South = 2, main 函数使用 fmt.Println() 时候会自动调用 String()...
  • 评论了面试题 Go每日一题(92)
    1. var s *Student 的话,s 是一个指针对象,零值是 nil;所以第一个输出 : s is nil 2. var p People = s 的话, 接口变量引用 nil,使用接口变量和...
  • 评论了面试题 Go每日一题(91)
    打印输出,0,1,1,2,不同的 const 域使用的 iota 都是相互独立的,其作用范围只会在 单个 const 域内
  • 1、&#34;str&#34;+&#34;123&#34;、fmt.Sprintf(&#34;str%d&#34;, 123) 2、程序编译通过,输出 0,1,2,&#34;zz&#34;,&#34;...
  • 1、指针变量p访问属性成员name,可以是隐式解引用(即p.name),可以是显式解引用((*p).name) 2、Go 本质上是一门静态类型语言,尽管语法上可以使用语法糖或不需要显式声明类型,但这些...
  • 编译无法通过,不通过的在 定义 sm1 和 sm2 后,使用 == 比较两者,原因:go 语言并不鼓励直接使用 == 比较引用类型,所以编译器并不会通过编译,因为地址比较在现实意义上,其结果并不能代表...
  • 1.程序编译无法通过,new() 返回的是指针对象,而 append() 当中的第一个参数是值传递,返回的是也是值对象,所以应该是 *list = append(*list, 1) 2.程序编译无法通...
  • 1. 第一个程序输出 [0 0 0 0 0 1 2 3],第二个程序输出 [1 2 3 4] 2. 第二个程序设计的函数没有必要返回 error 类型,且有多个返回值的时候,一个带了别名,另外一个也...
  • for range 循环遍历的时候会复用同一个变量引用的地址,降低频繁创建和销毁临时变量带来的开销,所以每一次元素遍历都会将 val 引用的地址的值修改为当前遍历到的目标元素
  • 评论了面试题 Go每日一题(90)
    接口实现的接收者类型是指针接收者,所以接口引用只能引用指针对象,所以应该是 var peo People = &amp;Student{}