go语言学习之 指针

//指针的初步认识
package main
import "fmt"
func  main() {
	a := 10
	fmt.Printf("变量a的地址 %x \n",&a)

	b := []int{1,3,4,6,7,9}
	fmt.Printf("变量b的地址 %x \n",&b)
}

指针不能运算

 

package main
import "fmt"
func  main() {
	//定义实际变量
	a := 120

	//声明指针变量
	var ip *int

	//给指针变量ip复制
	ip = &a

	//打印a的类型和值
	fmt.Printf("a 的类型 %T  值是%v \n",a,a)
	//打印&a的类型和值
	fmt.Printf("&a 的类型 %T  值是%v \n",&a,&a)
	//打印ip的类型和值
	fmt.Printf("ip 的类型 %T  值是%v \n",ip,ip)
	//打印*ip的类型和值  添加*号获取该内存地址里的值
	fmt.Printf("*ip 的类型 %T  值是%v \n",*ip,*ip)
	//打印*ip的类型和值  添加*号获取该内存地址里的值
	fmt.Printf("*&a 的类型 %T  值是%v \n",*&a,*&a)
}

符合数据类型指针以及空指针

package main
import "fmt"
//定义复合数据类型
type Student struct{
	name string
	age int
	married bool
	sex int8
}
func  main() {
	//使用复合数据类型

	s1 :=Student{"Steven",30,true,1}
	s2 :=Student{"Sunny",25,false,0}

	var a *Student = &s1
	var b *Student = &s2

	//打印s1的类型和值
	fmt.Printf("s1 的类型 %T  值是%v \n",s1,s1)
	//打印s2的类型和值
	fmt.Printf("s2 的类型 %T  值是%v \n",s2,s2)
	//打印&s1的类型和值
	fmt.Printf("&s1 的类型 %T  值是%v \n",&s1,&s1)
	//打印&s2的类型和值
	fmt.Printf("&s2 的类型 %T  值是%v \n",&s2,&s2)

	//打印a的类型和值
	fmt.Printf("a 的类型 %T  值是%v \n",a,a)
	//打印b的类型和值
	fmt.Printf("b 的类型 %T  值是%v \n",b,b)


	//打印*a的类型和值
	fmt.Printf("a 的类型 %T  值是%v \n",*a,*a)
	//打印*b的类型和值
	fmt.Printf("b 的类型 %T  值是%v \n",*b,*b)


	//打印&*a的类型和值
	fmt.Printf("&*a 的类型 %T  值是%v \n",&*a,&*a)
	//打印&*b的类型和值
	fmt.Printf("&*b 的类型 %T  值是%v \n",&*b,&*b)

	//打印&a的类型和值
	fmt.Println(&a.name,&a.age,&a.married,a.sex)
}

空指针

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值