面试题答案
一键面试-
问题: 这段代码会出现运行时错误,提示
panic: runtime error: invalid memory address or nil pointer dereference
。原因是变量ptr
是一个*int
类型的指针,但是它被声明后并没有指向任何有效的int
类型变量,即它的值为nil
。当尝试通过解引用nil
指针(*ptr
)来访问其指向的值时,就会引发运行时错误。 -
修正方法:
- 方法一:为指针分配内存:
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
指针解引用的错误。