我是靠谱客的博主 殷勤哑铃,最近开发中收集的这篇文章主要介绍【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:%vn",person1)
   demo(&person1)
   fmt.Printf("person1:%vn",person1)
}

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

2. 值类型,引用类型

2.1 值类型

值传递类型:布尔变量、数值类型、字符串类型、数组
值在传递给函数或者方法时会被复制一份,然后方法或函数使用的是复制的这份值,也就不会对原值产生什么影响。

2.2 引用类型

引用类型:映射(map),数组切片(slice),通道(channel),方法与函数。

2.3 golang字符串

golang字符串除了函数传递是值拷贝以外,字符串修改操作,也是值拷贝出来的,所以golang字符串有个特点,初始化后永不可变。

最后

以上就是殷勤哑铃为你收集整理的【golang - 关键词】指针、引用、new、&的全部内容,希望文章能够帮你解决【golang - 关键词】指针、引用、new、&所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部