首页 > 其他分享 >Golang struct 结构体注意事项和使用细节

Golang struct 结构体注意事项和使用细节

时间:2023-11-10 12:34:50浏览次数:31  
标签:r1 Point 注意事项 Golang 地址 内存 rightDown leftUp struct


结构体所有字段在内存当中是连续的


Golang struct 结构体注意事项和使用细节_golang

type Point struct {
	x, y int
}

type Rect struct {
	leftUp, rightDown Point
}

func main() {
	//r1会在内存当中有四个整数
	r1 := Rect{
		leftUp: Point{
			x: 1,
			y: 2,
		},
		rightDown: Point{
			x: 3,
			y: 4,
		},
	}
	//r1有四个int,在内存当中是连续分布的,打印地址
	fmt.Printf("%p %p %p %p", &r1.leftUp.x, &r1.leftUp.y, &r1.rightDown.x, &r1.rightDown.y)

}

0xc0000141a0 0xc0000141a8 0xc0000141b0 0xc0000141b8

 一个int类型刚好8个字节。可以看到结构体的字段在内存当中是连续分布的,通过地址的加减来找到对应的数据。

r1 := Rect{
		leftUp: &Point{
			x: 1,
			y: 2,
		},
		rightDown: &Point{
			x: 3,
			y: 4,
		},
	}
	fmt.Printf("%p %p", &r1.leftUp, &r1.rightDown)

0xc00003e260 0xc00003e268

可以看到指针的地址也是连续的。r1有两个*point类型,这个两个*Point类型的本身地址也是连续的,但是他们指向的地址不一定是连续。

 

结构体转换


Golang struct 结构体注意事项和使用细节_golang_02

字段名称,字段类型,字段个数都得一致才可以转。

Golang struct 结构体注意事项和使用细节_字段类型_03

标签:r1,Point,注意事项,Golang,地址,内存,rightDown,leftUp,struct
From: https://blog.51cto.com/u_14035463/8295682

相关文章

  • Golang锁简单使用
    golang主要有两种锁:互斥锁和读写锁互斥锁Mutex用于提供一种加锁机制(LockingMechanism),保证同一时刻只有一个goroutine在临界区运行packagemainimport( "fmt" "sync" "time")funcmain(){ varmutexsync.Mutex x:=0 gofunc(){ mutex.Lock() x=x+1......
  • Golang服务端断线重连
    断线重连的逻辑很简单,就是把用户存到服务器内存中,当客户端再次登录的时候,判断内存中是否有用户的值,有的话替换packagemainimport( "fmt" "github.com/gorilla/websocket" "log" "net/http" "sync" "time")typeClientstruct{ conn*we......
  • postman在数据采集过程中的调试注意事项
    Postman是一个强大的API调试工具,它可以帮助开发人员测试和调试API端点,以确保它们按预期工作。在使用Postman进行接口调试时,以下是一些注意事项和可能出现的问题,以及如何解决这些问题。 1.确保请求参数正确在测试API接口时,确保您提供了正确的请求参数非常重要。Postman......
  • Golang使用crontab
    要是记不住crontab格式,就去网上生成,在线crontab有很多。例如https://www.pppet.net/packagemainimport( "fmt" "github.com/robfig/cron/v3" "time")/**第一个*:second,范围(0-60)第二个*:min,范围(0-59)第三个*:hour,范围(0-23)第四个*:dayofmonth,......
  • 广州汽车托运注意事项
    十一月份来啦!!最近想要去海南过冬的宝子好多,千万不要选汽车托运因为真的太太太香啦~~可以把行李打包好放车上一起拖到目的地一大笔运费都省掉了超赞的好吗?!托运前大家一定要记住以下几点:贵重、私人物品别放车上,避免丢失。易燃易爆的物品别放车......
  • 出口美国操作要点汇总│走美国海运的注意事项│箱讯科技
    01服务标准美国的货物需要细致的服务,货物到港后的服务也是非常重要的。如果在货物到港15天内,如果没有报关行进行(PROCEED),货物就会进入了G.O.仓库,G.O.仓库的收费标准是非常高的。02代理资格审核美国航线除了各家船公司,所有从事美国线运输的正规货代都是必须拥有在美国本土(FMC)注册的......
  • nacos中group以及namespace的使用注意事项
    服务注册到不同的命名空间下,服务间无法通过OpenFeign指定服务名进行负载通信!!! 命名空间使用注意事项1.同名的命名空间只能创建一个! 2.微服务间如果没有注册到一个命名空间下,无法使用OpenFeign指定服务名负载通信(服务拉取的配置文件不同命名空间不影响) 即服务间如果需要......
  • 一些小 trick/注意事项
    一些小trick/注意事项数论模数定义为常量能优化很多时间埃筛加个整除break判断就变成了欧拉筛筛\(\mu\)的时候记得\(\mu(1)=1\)记得看清楚整除分块求的是\(\sum\)还是\(\prod\),这决定了要不要乘一段区间和树论可以先考虑链的情况DDP搞清楚用的是行向量还是列......
  • 论文阅读:Local and Global Structure for Urban ALS Point Cloud Semantic Segmentati
    LocalandGlobalStructureforUrbanALSPoint CloudSemanticSegmentationWith Ground-AwareAttention利用地面感知注意力对城市ALS点云进行局部和全局结构的语义分割摘要机载激光扫描(ALS)点云的解释在地理信息生产中起着显著的作用。作为解释的关键步骤,准确的语义分割可以......
  • beego框架 golang web框架-网上花店
    beego框架golangweb框架-网上花店beego网上花店功能介绍主页商品列表展示商品详情用户登录注册购买购物车评价用户中心订单列表后台管理页商品管理添加修改删除商品用户管理添加删除用户网上花店功能比较简单适合刚接触beego的初学者使用技术beego框架My......