Go面试题集:第一弹:语法基础(共92题)-Part1(第1~第10题)

第一弹:语法基础(共92题)之Part1(第1~第10题)


文章目录

  • 第一弹:语法基础(共92题)之Part1(第1~第10题)
    • 面试题1:Golang中make与new的区别?
      • 1.1 答案解析
      • 1.2 最终答案
    • 面试题2:简述Golang数组与切片的区别?
      • 2.1 答案解析
      • 2.2 最终答案
    • 面试题3:Gloang中for range的时候它的地址会发生变化吗?
      • 3.1 答案解析
      • 3.2 最终答案
    • 面试题4:go defer,多个defer的顺序,defer在什么时候会修改返回值?
      • 4.1 答案解析
        • 4.1.1 多个 `defer` 的执行顺序
        • 4.1.2 `defer` 何时会修改返回值
        • 4.1.3 示例分析
      • 4.2 最终答案
    • 面试题5:在Go语言中函数与方法以及方法接收者的区别?
      • 5.1 答案解析
        • 5.1.1 函数(Function)
        • 5.1.2 方法(Method)
        • 5.1.3 方法接收者(Receiver)
        • 5.1.4 函数 vs 方法的关键区别
        • 5.1.5 示例对比
      • 5.2 最终答案
    • 面试题6:Go语言中单引号、双引号、反引号的区别?
      • 6.1 答案解析
        • 6.1.1 单引号(`'`)
        • 6.1.2 双引号(`"`)
        • 6.1.3 反引号(`` ` ``)
        • 6.1.4 对比表格
      • 6.2 最终答案
    • 面试题7:Go中slice的底层数据结构和特性是?
      • 7.1 答案解析
        • 7.1.1 Slice 的底层数据结构
        • 7.1.2 核心特性
        • 7.1.3 使用场景与性能优化
      • 7.2 最终答案
    • 面试题8:Go中defer的底层数据结构和特性是?
      • 8.1 答案解析
        • 8.1.1 `defer` 的底层数据结构
        • 8.1.2 核心特性
        • 8.1.3 底层实现优化(Go 1.14+)
      • 8.2 最终答案
    • 面试题9:Go中两个interface可以比较吗?
      • 9.1 答案解析
        • 9.1.1 接口比较的基本规则
        • 9.1.2 核心判断条件
        • 9.1.3 示例分析
        • 9.1.4 不可比较的类型
        • 9.1.5 安全比较的建议
      • 9.2 最终答案
    • 面试题10:Go中如何高效的进行字符串拼接?
      • 10.1 答案解析
        • 10.1.1 低效方法:直接使用 `+` 或 `fmt.Sprintf`
        • 10.1.2 高效方法
        • 10.1.3 性能对比(基准测试)
        • 10.1.4 优化技巧
      • 10.2 最终答案


面试题1:Golang中make与new的区别?

1.1 答案解析

在 Go 语言中,make 和 new 都是用于内存分配的内置函数,但它们的用途和行为有显著区别:

  1. 适用类型不同‌

    • new 可以为‌任意类型‌分配内存,包括基本类型(如 int、struct)和引用类型(如 slice、map、channel)。
    • make ‌仅适用于引用类型‌:slice、map 和 channel。
  2. 返回值不同‌

    • new(T) 返回一个指向类型 T 的‌指针‌(*T),该指针指向的内存会被初始化为类型的‌零值‌。
    • make(T, args…) 返回的是类型 T 的‌初始化后的实例‌(非指针),可以直接使用。
  3. 初始化行为不同‌

你可能感兴趣的:(golang,开发语言,后端)