MST

星途 面试题库

面试题:Go语言中指针错误使用案例之空指针解引用分析

在Go语言中,以下代码会出现什么问题?请解释原因并说明如何修正。 ```go package main import "fmt" func main() { var ptr *int fmt.Println(*ptr) } ```
33.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 问题: 这段代码会出现运行时错误,提示 panic: runtime error: invalid memory address or nil pointer dereference。原因是变量 ptr 是一个 *int 类型的指针,但是它被声明后并没有指向任何有效的 int 类型变量,即它的值为 nil。当尝试通过解引用 nil 指针(*ptr)来访问其指向的值时,就会引发运行时错误。

  2. 修正方法

    • 方法一:为指针分配内存
package main

import "fmt"

func main() {
    var num int
    var ptr *int = &num
    fmt.Println(*ptr)
}
- **方法二:使用 `new` 函数**:
package main

import "fmt"

func main() {
    ptr := new(int)
    fmt.Println(*ptr)
}

这两种方法都确保了 ptr 指向一个有效的 int 类型变量,从而避免了 nil 指针解引用的错误。