初级会员
  • 第 71764 位会员
  • hengbo
  • 2022-01-25 11:32:10
  • Offline
  • 21 66

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了面试题 Go每日一题(41)
    #20 @don178 我也是这么想的为啥啊
  • 评论了面试题 Go每日一题(13)
    不能通过编译, s1 = append(s1, s2) 需要改成 s1 = append(s1, s2...) 解构一下
  • 评论了面试题 Go每日一题(12)
    - new和make的区别: new只能用来分配内存,且是初始化为零值,如果是new slice,map,chan,则零值会赋值为nil, 这三种不建议使用new; make既可以用来分配内容也会初始化返回值,用来初始化 slice,map,chan - 题目中如果是改为如下代码;不会报错,但是因为append的原因才不会报错, 如果是map时会报错 ```go // *a的值实际上是被分配为nil的, 由于append nil 时会自动进行初始化,故不会报错 func main() { a := new([]int) *a = append(*a,1) fmt.Println(*a) } ``` - 题目中如果是new(map),代码如下,编译不会报错,执行会报错, 因为*m的零值是nil,使用时需要注意 ```go func main() { m := new(map[int32]int32) (*m)[1]=1 fmt.Println(*m) } ```
  • 评论了面试题 Go每日一题(11)
    两者都可以用来初始化, make用来slices,map,chan的初始化, new用来int,string,struct等的初始化 ,make初始化返回当前值,new初始化返回的是值的指针
  • 评论了面试题 Go每日一题(5)
    一个协程内可以删, 多协程可能会死锁panic,map不是一个线程安全的结构,多协程可以使用sync.Map, 删除时,如果删除还没遍历到的key下的map,则后续不会再次遍历到这个key