Go之指针


package main

import "fmt"
// import "strings"
func main() {
	// 指针
	// 区别于C/C++中的指针,Go语言中的
	// 指针不能进行偏移和运算,是安全指针
	// Go语言中的函数传参都是值拷贝
	// 当我们需要修改某个变量,可以创建一个指向
	// 该变量地址的指针变量

	// Go语言中的值类型(int,float,bool,string,array,struct)
	// 都有对应的指针类型
	a := 10
	b := &a
	fmt.Println(b) //0xc000012090
	fmt.Println(*b) //10

	// new和make的区别
	// new是一个内置函数,它的函数签名如下
	// func new(Type) *Type
	// new函数不太常用,使用new函数得到的是一个类型的指针
	// 并且该指针对应的值为该类型的零值
	c := new(int)
	fmt.Println(*c) //0
	// make也用于内存分配,区别于new
	// 它只用于sloce、map以及chan的内存创建
	// 而且它返回的类型就是折三个类型本身,而不是它们的指针类型
	// 因为这三种类型就是引用类型,所以没必要返回它们的指针了
	// 它的函数签名如下
	// func make(t Type, size ...IntegerType) Type
	// make函数无可替代,我们使用sloce、map以及chan 的时候
	// 都需要用make进行初始化,然后才可以对它进行操作
	x := make([]int, 4)
	fmt.Println(x)

	// 自定义类型
	// go语言中可以通过type关键字来自定义类型
	// 自定义类型定义了一个全新的类型,我们可以基于内置的基本类型定义
	// 也可以通过struct定义
	// 通过type关键词的定义,MyInt就是一中新的类型,它具有int的特性
	type MyInt int
	var y MyInt = 55
	fmt.Println(y)

	// 类型别名
	type TheInt = int
	var z TheInt = 55
	fmt.Println(z)
	// 我们之前见过的type就是类型别名
	// 它们的定义是 type byte = uint8
} 
posted @ 2020-10-12 22:17  cl94  阅读(72)  评论(0编辑  收藏  举报