在 Go 中,只有部分类型才有对应的指针类型。具体来说,只有那些不可寻址的类型才有指针类型。比如,常量、字符串、字典等类型是不可寻址的,因此它们都有对应的指针类型。而整数、浮点数、布尔值等基本类型都是可寻址的,因此它们没有对应的指针类型。
以下是一个示例代码,展示 Go 中部分类型的指针类型:
package main
import "fmt"
func main() {
var a int = 10
var b *int = &a
fmt.Printf("%T\n", a) // int
fmt.Printf("%T\n", b) // *int
var c string = "hello"
var d *string = &c
fmt.Printf("%T\n", c) // string
fmt.Printf("%T\n", d) // *string
var e map[string]int = map[string]int{"foo": 1, "bar": 2}
var f *map[string]int = &e
fmt.Printf("%T\n", e) // map[string]int
fmt.Printf("%T\n", f) // *map[string]int
var g func() = func() {
fmt.Println("hello world")
}
var h *func() = &g
fmt.Printf("%T\n", g) // func()
fmt.Printf("%T\n", h) // *func()
}
在这个例子中,我们定义了几个不同类型的变量,包括整数、字符串、字典和函数。然后,我们定义了对应的指针类型,并使用 %T 格式化符号打印它们的类型。
需要注意的是,整数、字符串、字典和函数都有对应的指针类型,但是布尔值、浮点数等基本类型则没有对应的指针类型。