golang怎么给空结构体赋值
一、前言
最近没少使用golang
,也没经过系统的学习,直接就上去开发了,遇到不少坑也学到不少东西,本次记录下给空结构体赋值的问题。
二、案例
1.结构体结构及错误
type Test struct {Test1 int64 `gorm:"column:test1" json:"test1"`Test2 string `gorm:"column:test2" json:"test2"
}var test []*Test//这种方式是失败的? 因为目前是空的,不能用类似于php的方法写死test[0].Test1 = xxxtest[0].Test2 = xxxx
这里可以看到,本来想直接填充来着,但是死活写入不了,惯性思维害死人啊,网上百度原因 是一个空的结构体,指针为nil
,是不占用内存空间的,无法赋值
2.给空结构体赋值的方式
(1)第一种方法
直接赋值 (表示这个是一个testStruct{}类型)test1 :=testStruct{Test1: xx,Test2: xx,}
(2) 第二种方法
test1 := &testStruct{}test1.Test1 = int64(0)
(3)第三种方法
test1 :=new(testStruct)test1.Test1 = int64(0)
(4)关于new和make初始化的区别
new: 适用于创建指针,一般创建基本类型,int等,返回的是指针
make:主要创建引用类型,比如切片,map。返回的是创建的类型本身的引用,修改的话会影响到本身,类似于php的&make类似于[]int{} 来初始化。
说实话,稍微有点繁琐了,其实关键还是在初始化这个结构体的时候,加引用就好了,这样返回的不是nil
,剩下的自然就好操作了。。
end
golang怎么给空结构体赋值相关推荐
- go语言-空结构体/ chan struct{}
文章目录 空结构体 struct{} chan struct{} 常用用法 带缓冲的chan struct{}数据读写 空结构体 struct{} 空结构体的宽度是0,占用了0字节的内存空间. var ...
- Golang之空结构体和零长数组的实践
空结构体和零长数组(两个复合类型)都仅仅是一个占位符,不占用空间,这里编译器进行了优化,如果结构体或数组的unsafe.sizeof=0则直接返回zerobase. // 必须用key来初始化结构体 ...
- 换个语言学一下 Golang (9)——结构体和接口
换个语言学一下 Golang (9)--结构体和接口 基本上到这里的时候,就是上了一个台阶了.Go的精华特点即将展开. 结构体定义 上面我们说过Go的指针和C的不同,结构体也是一样的.Go是一门删繁就 ...
- C99标准的结构体赋值注解
关于结构体的赋值问题 #include <stdio.h>static struct id_mesg{char *name;unsigned int age;char *job; }; s ...
- C语言结构体赋值和有指针成员的结构体赋值
1 结构体赋值 #include <windows.h>struct MyStruct {int a;int b;char c[20]; };int APIENTRY WinMain(H ...
- C++中的空类与空结构体大小
今天面试遇到了一个很有意思的问题,即空结构体在C++中所占的内存大小是多少?参见如下代码: #include <iostream> struct S0 { };int main() {st ...
- go struct{} 空结构体的特点和作用
空结构体的特点和作用 参考代码 package mainimport ("fmt""unsafe" )func main() {empStruct() } // ...
- 【C语言】结构体赋值
结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用.对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值.那么能否将一个结构体用赋值号("=")直接赋值给另一个结 ...
- Go 空结构体的 3 种使用场景
转子地址:https://mp.weixin.qq.com/s/zWzyl6x9sZdXZCaAuva2lA 在 Go 语言中,有一个比较特殊的类型,经常会有刚接触 Go 的小伙伴问到,又或是不理解. ...
最新文章
- Helm包管理工具(简介、安装、方法)
- tableau系列之如何将甘特图做成瀑布图
- ATDD验收测试驱动开发
- OpenCV:使用OpenCV3随机森林进行统计特征多类分析
- 美团点评Kubernetes集群管理实践
- docker php gd png.h,docker php 容器安装GD库
- 演练 开心庄园 1002
- 问题:如何将多个文件里内容都提取出来
- java中成绩转换_成绩转换
- vs2010插件之VisualSVN
- Domain Adaptation 论文笔记
- 华为云服务器建站教程
- android ipad 播放器,[AS3]专业级跨平台网页播放器支持PC、iPad、iPhone、Android系统...
- 轻松选择/复制word文档的整个章节的内容
- 朱嘉明:数字经济和非同质时代——NFT
- seo引流怎么做?SEO引流方法有哪些?如何做好seo引流
- Qt调用exit()、quit()不生效问题
- php通过api获取天气信息,调用API获取城市天气信息
- 重组人碱性成纤维细胞生长因子(附文献)
- 列表3:修改删除函数实操
热门文章
- 做diff_Vue3.0时代你必须了解的:diff算法原理和优化
- SCRFD is not in the models registry
- win10 ndk hello_world
- Failed to resolve hostname 192: The name does not resolve for the supplied parameters
- 0x00007FF8EDA19A9D (ntdll.dll)处引发的异常: 0xC0000005: 写入位置 0x00000000CED889F8 时发生访问冲突
- pybind 编码h264
- Multiple Object Tracking:多目标跟踪综述
- layui table is not a valid module
- Windows10 右键 cmd
- Python DAG—归简法—拓扑排序