📅  最后修改于: 2023-12-03 15:15:23.326000             🧑  作者: Mango
指针是一种特殊的变量,它存储了一个变量的内存地址。在 Golang 中,可以通过使用 &
操作符来获取一个变量的地址,使用 *
操作符来获取指针所指向的变量的值。
Golang 中的指针可以使用 new
函数创建,该函数会在堆上分配一块内存,并返回该内存地址的指针。下面是一个示例:
package main
func main() {
var ptr *int
ptr = new(int)
*ptr = 42
println(*ptr)
}
在上面的示例中,我们创建了一个 int
类型的指针 ptr
,然后通过 new
函数在堆上分配了一块内存,并将其地址赋值给 ptr
。然后,我们使用 *
操作符将 42 赋值给指针所指向的变量,并使用 println
函数输出指针所指向的变量的值。
在 Golang 中,可以使用 *
操作符来获取指针所指向的值。下面是一个示例:
package main
func main() {
var a int = 42
var ptr *int = &a
println(*ptr)
}
在上面的示例中,我们创建了一个 int
类型的变量 a
,并将其赋值为 42。然后,我们创建了一个 int
类型的指针 ptr
,并将 a
的地址赋值给 ptr
。最后,我们使用 *
操作符获取 ptr
所指向的值,并使用 println
函数输出该值。
在 Golang 中,可以通过指针来修改其所指向的值。下面是一个示例:
package main
func main() {
var a int = 42
var ptr *int = &a
println(*ptr)
*ptr = 100
println(*ptr)
}
在上面的示例中,我们创建了一个 int
类型的变量 a
,并将其赋值为 42。然后,我们创建了一个 int
类型的指针 ptr
,并将 a
的地址赋值给 ptr
。然后,我们将 *ptr
的值修改为 100,并使用 println
函数输出该值。
在 Golang 中,未经初始化的指针会被默认赋值为 nil
,表示该指针并不指向任何有效的内存地址。下面是一个示例:
package main
func main() {
var ptr *int
if ptr == nil {
println("ptr is nil")
}
}
在上面的示例中,我们创建了一个 int
类型的指针 ptr
,由于未对其进行初始化,ptr
的值为 nil
。我们使用 if
语句判断 ptr
是否为 nil
,如果是,则输出一条消息。
在 Golang 中,可以将指针作为函数参数来传递变量的引用,从而实现函数内部对变量的修改。下面是一个示例:
package main
func increment(ptr *int) {
*ptr++
}
func main() {
var count int = 0
increment(&count)
increment(&count)
println(count)
}
在上面的示例中,我们创建了一个 int
类型的变量 count
,并初始化其值为 0。然后,我们定义了一个名为 increment
的函数,该函数接收一个 int
类型的指针,用于增加该指针所指向变量的值。最后,我们通过 increment
函数两次增加 count
变量的值,并使用 println
函数输出最终结果。
本文介绍了 Golang 中的指针的基本概念、创建指针、获取指针所指向的值、修改指针所指向的值、nil 指针以及指针作为函数参数等相关知识。指针是 Golang 中非常重要的概念,熟练掌握指针的使用可以帮助程序员更好地理解和设计程序。