golang 碎片整理 之 指针

golang中保留了C中的值和指针的区别,但对于指针的繁琐用法进行了简化,引入了"引用"的概念,所以在go语言中,你不用担心因为直接操作内存而引起各式各样的错误。
运算符只有 & 和 ,一个是取地址一个是取值(解析地址)。

func main(){
    var i int
    i = 1
    var p *int
    p = &i
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
    *p =2
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
    i = 3
    fmt.Printf("i=%d,p=%d,*p=%d\n",i,p,*p)
}

output:
i=1,p=824634302464,p=1
i=2,p=824634302464,
p=2
i=3,p=824634302464,*p=3

type abc struct{
    v int
}
func (a abc)aaa(){
    a.v = 1
    fmt.Printf("1:%d\n",a.v)
}
func (a *abc)bbb(){
    fmt.Printf("2:%d\n",a.v)
    a.v = 2
    fmt.Printf("3:%d\n",a.v)
}
func (a *abc)ccc(){
    fmt.Printf("4:%d\n",a.v)
}
func main(){
    aobj:=abc{}
    aobj.aaa()
    aobj.bbb()
    aobj.ccc()
}

output:
1:1
2:0
3:2
4:2

原文地址:https://blog.51cto.com/13766835/2388447

时间: 2024-11-06 09:37:35

golang 碎片整理 之 指针的相关文章

golang 碎片整理之 结构体

什么是结构体? 结构体(struct)是用户自定义的类型,它代表若干字段的集合,可以用于描述一个实体对象,类似Java中的class,是golang面向对象编程的基础.结构体的概念在软件工程上的旧术语是ADT(抽象数据类型: Abstract Date type).在c++它也是存在,并且名字也是struct,在面向对象的编程语言中,跟一个无方法的轻量级类一样.因为在Go语言中没有类的概念,所以在go中结构体有着很重要的地位. 如何定义一个结构体 type Coordinate struct {

golang碎片整理之 fmt.Scan

本文介绍了从golang语言中fmt包从标准输入获取数据的Scan系列函数.从io.Reader中获取数据的Fscan系列函数以及从字符串中获取数据的Sscan系列函数的用法. Scan系列 go语言fmt包下有fmt.Scan.fmt.Scanf.fmt.Scanln三个函数,可以在程序运行过程中从标准输入获取用户的输入. fmt.Scan 语法 func Scan(a ...interface{}) (n int, err error) Scan 从标准输入扫描文本,读取由空白符分隔的值保存

golang碎片整理之反射

本文介绍go语言反射的意义和基本使用. 变量的内在机制 go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息 值信息:程序运行过程中可动态变化的. 反射的介绍 反射是指在程序运行期对程序本身进行访问和修改的能力.程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分.在运行程序时,程序无法获取自身的信息.支持反射的语言可以在程序编译期将变量的反射信息,如字段名称,类型信息.结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射

golang 碎片整理之 并发

并发与并行 并发:同一时间段内执行多个任务.并行:同一时刻执行多个任务. Go语言的并发通过goroutine实现.goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作.goroutine是由go语言的运行调度完成的,而线程是由操作系统调度完成的.Go语言还提供了channel在多个goroutine间进行通信.goroutine和channel是go语言秉承的CSP(Communicating Sequential Process)并发模式的

golang 碎片整理之 函数

函数是组织好的,可重复利用的.用于执行指定任务的代码块.go语言中支持函数.匿名函数和闭包,并且函数在go语言中属于"一等公民". 函数定义 go语言中使用func关键字定义函数,具体格式如下: func 函数名(参数) (返回值){ 函数体 } 其中, 函数名由字母.数字.下划线组成,但是函数名的第一个字母不能是数字,在同一个包内,函数名也不能重名. 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔. 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型

golang 碎片整理之MySQL

MySQL是常用的关系型数据库,本文介绍了go语言如何操作MySQL数据库. Go操作MySQL 连接 Go语言中的database/sql 包提供了保证SQL或类SQL数据库的广泛接口,并不提供具体的数据库驱动.使用database/sql包时必须注入一个数据库驱动. 下载依赖 go get -u github.com/go-sql-driver/mysql 使用MySQL驱动 func Open(driverName,dataSourceName string)(*DB,error) Ope

SqlServer数据库碎片整理——BCC SHOWCONTIG

SQLServer提供了一个数据库命令——DBCC SHOWCONTIG——来确定一个指定的表或索引是否有碎片. 示例: 显示数据库里所有索引的碎片信息 DBCC SHOWCONTIG WITH ALL_INDEXES 显示指定表的所有索引的碎片信息 DBCC SHOWCONTIG (authors) WITH ALL_INDEXES 显示指定索引的碎片信息 DBCC SHOWCONTIG (authors,aunmind) DBCC 执行结果: 扫描页数:如果你知道行的近似尺寸和表或索引里的行

索引碎片整理(转)

索引碎片整理 一碎片种类 1 内部碎片,又称为平均页密度.是指索引正在占有超过它实际所需的空间大小. 它具有两面型:低百分比会对读取数据的查询产生负面影响,会涉及更多读取操作,因为如果页被填充满的话, 只需读取更少的页:另一方面,如果如果在创建索引时设置一个较低的填充因子,就可以避免当插入更多记录而不 必进行页拆分. 对应sys.dm_db_index_physical_stats的列avg_page_space_used_in_percent. 2 外部碎片,又称平均碎片百分比,或逻辑碎片.是

浅谈磁盘碎片整理的好处与方法

磁盘碎片整理的好处 1.磁盘碎片整理可以让系统运行更顺畅,减少卡顿的现象,提高系统性能.2.需要注意的是,使用固态硬盘的用户千万不要使用"磁盘碎片整理"功能,因为所使用的技术不同,使用Windows自带的磁 盘碎片整理会使固态硬盘的寿命大大减短. 磁盘碎片整理的方法步骤 打开"此电脑",选中任意磁盘盘符,然后点击"管理"-"优化" 选中整理的磁盘,可以使用"Ctrl"+ "鼠标左键"来选