zoukankan      html  css  js  c++  java
  • 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
    } 
    
  • 相关阅读:
    mysql的存储过程与事务入门
    关于CreateProcess函数一些经验
    windows下dump文件调试
    指针相关
    nsi脚本中执行.bat文件要隐藏dos窗口问题
    C 预处理
    __declspec(dllimport)与__declspec(dllexport)作用总结
    [转]window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
    字符集与编码[转]
    vc下项目的头文件包含目录以及库导入预计库目录设置
  • 原文地址:https://www.cnblogs.com/cl94/p/13805961.html
Copyright © 2011-2022 走看看