您好,欢迎来到步遥情感网。
搜索
您的当前位置:首页【golang - 关键词】指针、引用、new、&

【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字符串有个特点,初始化后永不可变。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- obuygou.com 版权所有 赣ICP备2024042798号-5

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务