【golang - 关键词】指针、引用、new、&

1. 指针

1.1 指针特性
golang不支持指针运算,保证内存安全
golang有自己的垃圾回收,所以指针没有显示调用摧毁函数
空指针当一个指针被定义后没有分配到任何变量时,它的值为 nil。
nil指针也称为空指针。nil在概念上和其它语言的null、None、nil、NULL一样,都指代零值或空值。
1.2 new和&
new和&均可获取地址,也就是指针
person1 := new(Person)//使用new创建一个person2对象,同时获得person的指针
person2 := &Person{"lisi","man",25}//使用&创建一个person3对象,同时获得person的指针
1.3 结构体指针
type Person struct {
   name string
   sex  string
   age int
}
func main() {
   person1 := Person{"zhangsan","man",25} //创建一个person1对象
   fmt.Printf("person1:%v\n",person1)
   demo(&person1)
   fmt.Printf("person1:%v\n",person1)
}

func demo(person *Person)  {
   (*person).age = 18 //**显示的解引用**
   person.name = "GoLang" //**隐式的解引用**
}

2. 值类型,引用类型

2.1 值类型
值传递类型:布尔变量、数值类型、字符串类型、数组
值在传递给函数或者方法时会被复制一份,然后方法或函数使用的是复制的这份值,也就不会对原值产生什么影响。
2.2 引用类型
引用类型:映射(map),数组切片(slice),通道(channel),方法与函数。
2.3 golang字符串
golang字符串除了函数传递是值拷贝以外,字符串修改操作,也是值拷贝出来的,所以golang字符串有个特点,初始化后永不可变。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值