首页 > 其他分享 >golang的指针变量,智商声明没有赋值,不能直接 *p=123之类的

golang的指针变量,智商声明没有赋值,不能直接 *p=123之类的

时间:2023-03-04 13:56:18浏览次数:28  
标签:20 这是 fmt golang 123 内存 Printf 赋值 指针

package main

import "fmt"

func main() {
	//申明指针的时候,如果没有指向某个变量,默认值为nil
	//不能直接进行操作,包括读写
	//而用new返回的是有默认值的指针, 为数据类型的默认值
	var p1 = new(int)
	*p1 = 123 // panic   nil pointer
	fmt.Printf("这是p=%p,%v\n", p1, *p1)

	//有一块内存存放了10,它的地址由系统自动分配,别名是a
	a := 10 //内存存放的10变成了20
	fmt.Printf("这是00p=%p,%v\n", &a, a)
	a = 20
	var p *int
	fmt.Printf("这是22p=%p,%v\n", &a, a)
	fmt.Printf("这是11p=%p\n", p)
	p = &a //或者直接写 p := &a
	fmt.Printf("这是33p=%p,%v\n", p, *p)
	fmt.Printf("这是44p=%p,%v\n", &a, a)
	//上面的p是一个指针,通过 *p 的方式同样可以访问 变量a指向 的内存

	/*当你动态申请内存的时候,指针的存在意义之一就被体现出来了*/
	//ptr := new(int)
	//申请了一块内存空间,没有办法指定别名,new()返回内存地址,用指针接收
	//此时并没有变量能直接指向这块内存,所以只能通过内存地址来访问
}

输出:

这是p=0xc0000100a0,123
这是00p=0xc0000100c0,10
这是22p=0xc0000100c0,20
这是11p=0x0
这是33p=0xc0000100c0,20
这是44p=0xc0000100c0,20

标签:20,这是,fmt,golang,123,内存,Printf,赋值,指针
From: https://www.cnblogs.com/heris/p/17178181.html

相关文章

  • JS 扩展构造树形结构数据方法遇到的奇怪bug,object键值赋值失败
    原方法:/***构造树型结构数据*@param{*}data数据源*@param{*}idid字段默认'id'*@param{*}parentId父节点字段默认'parentId'*@param{*}chil......
  • protobuf golang&&python序列化反序列化测试
    1.概要最近考虑采用protobuf来实现kafka消息传递,所以先测试一下golang和python之前序列化互通问题。由于go和python对于二进制的表示在ide层面是无法统一的,直接把python......
  • hdu-1238
    http://acm.hdu.edu.cn/showproblem.php?pid=1238SubstringsTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalS......
  • react使用this.setState给数组中某个对象赋值
    先记录一下正确写法const{payTypeList}=this.state;lettemp=payTypeListdat.openFlag=type//这一句是必须的,不然状态无法更改temp.map((i......
  • golang-day1 进制
    写这个进制的文章目的是为了以后go类型和对于序列化反序列化做铺垫进制的表示十六进制:0x10、0X10八进制:0o10、0O10。010也行,但不推荐二进制:0b10、0B101000 ......
  • how golang build itself?
    howgolangbuilditself?https://www.reddit.com/r/golang/comments/vbibey/is_golang_compiler_open_source_from_noob/?sort=confidence"Thefirstgocompilerswer......
  • golang 生成Sqlserver数据表实体
    最近开始学习golang,公司原来很多项目都Sqlserver数据库的,世面上很多文章,都是关于Mysql的,自己参考了一个博主的文章,整了一个生成Sqlserver实体的小工具分享一下,能给个星......
  • C++ vs golang
    以前学过ruby,gml,lisp这些小众语言的我又开始了golang基本上所以语言,我觉得都应该和C++对比一下C++vsgolangInbrief,golangisalanguagewhichmixesC++,Pyth......
  • golang 判断元素是否在切片中
    在Go中,可以使用类型为 map[T]bool 的映射来判断切片中是否包含某个元素。例如,假设你想要判断整型切片 s 中是否包含元素 x。你可以这样做://声明一个名为m的映......
  • golang 连接clickhouse
    1.驱动:"github.com/ClickHouse/clickhouse-go/v2"2.连接代码:packagemodelimport("database/sql""fmt"_"github.com/ClickHouse/clickhouse-go/v......