定义
指针也是一种类型,也可以创建变量,称之为指针变量。指针变量的类型为 *Type,该指针指向一个 Type 类型的变量。指针变量最大的特点就是存储的某个实际变量的内存地址,通过记录某个变量的地址,从而间接的操作该变量。
创建指针
func main() {
// 通过定义普通变量获取指针
x := "嘿嘿嘿嘿嘿"
ptr := &x
fmt.Println(ptr)
//new 先创建好指针再分配内存
ptr2 := new(string)
*ptr2 = "哈哈哈哈哈哈哈哈哈"
fmt.Println(ptr2)
fmt.Println(*ptr2)
//先声明指针变量 再从其他变量获取内存地址指针变量
x2 := "hjkhkjfhkjhjk"
var p *string
p = &x2
fmt.Println(p)
/**
& 可以从一个变量中取得内存地址
* 赋值的左边,该指针指向的变量赋值的右边,赋值的右边 指一个指针变量中获取变量值(解引用)
*/
}
指针的类型
func pointType(){
mint := 1
mbool := false
mfloat := 2.3
mstring := "111"
fmt.Printf("type of &mint is : %T\n",&mint)
fmt.Printf("type of &mbool is : %T\n",&mbool)
fmt.Printf("type of &mfloat is : %T\n",&mfloat)
fmt.Printf("type of &mstring is : %T\n",&mstring)
}
指针的零值
func zeaoPointer(){
x := "hhhhhhhh"
var ptr *string
fmt.Println("ptr is ",ptr)
ptr = &x
fmt.Print("ptr is ",ptr)
}