指针初始化
直接使用ip是地址,*ip是取值(18)
func main() {
var (
a int = 18 //声明实际变量
ip *int //声明指针变量
)
ip = &a //把a的地址赋给ip指针
fmt.Println("a变量的值是: ", a)
fmt.Println("a变量的地址是: ", &a)
fmt.Println("指针ip的值为: ", ip)
fmt.Println("指针ip指向的值为: ", *ip)
}
//输出结果如下
a变量的值是: 18
a变量的地址是: 0xc0000aa058
指针ip的值为: 0xc0000aa058
指针ip指向的值为: 18
未取初始化的指针值默认为<nil>
func main() {
var age *int
fmt.Println(age)
}
<nil>
结构体类型指针
type Person1 struct {
name string
}
func main() {
p := Person1{
"wang",
}
var po *Person1 = &p
fmt.Println(po)
}
&{wang}
结构体初始化方法(==指针初始化推荐使用new函数==)
//1
func main() {
p1 := &Person{}
}
//2
func main() {
var testPerson Person
p2 := &testPerson
}
//3
func main() {
var testPerson = new(Person)
fmt.Println(testPerson.name)
}
可使用简洁定义
func main() {
p := Person1{
"wang",
}
po := &p
fmt.Println(po)
fmt.Printf("%T", po)
}
&{wang}
*main.Person1
评论