go结构体初始化_golang中结构体的初始化方法
目录
1、自定义一个结构体
type Vertex struct {
X, Y float64
}
2、初始化方法-指针:
rect1 := new(Vertex )
rect2 := &Vertex {}
rect3 := &Vertex {1, 2}
rect4 := &Vertex {X:100, Y:200}
注意: 这几个变量全部为指向Rect结构的指针(指针变量),因为使用了new()函数和&操作符.
3、初始化方法-类型实例
a := Rect{}
b := Rect{3, 4}
c := Rect{X=5, Y=6}
则表示这个是一个Rect{}类型.两者是不一样的.
4、区别
下面这个例子能展现之间区别:
package main
import "fmt"
type Vertex struct {
X, Y float64
}
func main() {
rect1 := new(Vertex)
rect2 := &Vertex{1, 2}
fmt.Printf("%v %T %v \n", rect1, rect1, *rect1)
fmt.Printf("%v %T %v \n", rect2, rect2, *rect2)
rect3 := Vertex{X: 5, Y: 6}
fmt.Printf("%v %T\n", rect3, rect3)
}
// 输出:
/*
&{0 0} *main.Vertex {0 0}
&{1 2} *main.Vertex {1 2}
{5 6} main.Vertex
*/
从结果中可以清楚的看到两者的不同.
用 new 分配内存 内建函数 new 本质上说跟其他语言中的同名函数功能一样:new(T) 分配了零值填充的 T 类型的内存空间,并且返回其地址,一个 *T 类型的值。用 Go 的术语说,它返回了一个指针,指向新分配的类型 T 的零值。记住这点非常重要。 这意味着使用者可以用 new 创建一个数据结构的实例并且可以直接工作。
务必记得 make 仅适用于 map,slice 和 channel,并且返回的不是指针。应当用 new获得特定的指针。
标签: golang
顶一下
(0)
0%
踩一下
(0)
0%
go结构体初始化_golang中结构体的初始化方法相关推荐
- go结构体初始化_golang中结构体的初始化方法(new方法)
自定义一个结构体 type Rect struct { x, y float64 width, height float64 } 初始化方法: rect1 := new(Rect) rect2 := ...
- go结构体初始化_golang中结构体的初始化方法(new方法) | 学习笔记
自定义一个结构体 1 2 3 4type Rect struct { x, y float64 width, height float64 } 初始化方法: 1 2 3 4rect1 :=new(Re ...
- golang 结构体断言_Golang中的reflect原理
反射(reflect)是在计算机程序运行时,访问,检查,修改它自身的一种能力,是元编程的一种形式.在Java等语言中都很好地支持了反射.Golang也实现了反射,主要核心位于reflect包,官方文档 ...
- java发送c语言结构体_C语言中结构体直接赋值?
在C语言中结构体变量之间可以进行赋值操作吗? 简单结构体的赋值 先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化.简单结构体(不包含指针成员)直接赋值没有问题. 我们先下面 ...
- C语言结构体与C++中结构体和类的区别
在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...
- c 结构体转byte_C中结构体和字节流的互换及内存对齐
mystruct p; char buff[50]; memcpy(buff,&p,sizeof(p)); //把p的内容以字节形式拷贝到buff中 mystruct* q; q = (mys ...
- java为什么要初始化_JAVA中到底要怎么样初始化
Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...
- java用一个方法对变量初始化_java中怎么给变量初始化?
展开全部 不同的变量初始化32313133353236313431303231363533e4b893e5b19e31333337613764方法不同. 变量包括:类的属性,或者叫值域 方法里的局部变 ...
- java中构造代码块、方法调用顺序问题
1. 继承的概念 继承在本职上是特殊--一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...
最新文章
- zookeeper web ui--gt;node-zk-browser安装
- java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能
- jpi多表联查_数据库两表联查、多表联查,多重联查
- 详解数据科学与数理统计的基本概念
- 1218 鼠标样式 cursor
- 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”
- ASP.NET基础教程-C#与JAVA的比较
- Keil出现 err:Cannot read project file异常;err:点击Project闪退
- SENT协议学习总结
- 虚拟主机和服务器之间的区别
- table——caption
- 如何管理一盘散沙的团队?
- 使用两个FBO互相绑定实现PS液化效果
- ISE FPGA时钟系统
- dr.fone for android,Wondershare Dr.Fone for Android
- 图片怎么修改成750x750像素?
- php两个数字进行比较大小
- STM32掌机教程3,工程模板与带灯按键测试
- 查看文本是linux格式还是windows格式;以及实现linux文本格式和linux文本格式转换
- 安装指定版本的Mariadb数据库
热门文章
- xshell 6 连接debian系统拒绝了密码_Xshell中操作Linux的常用命令,你知道几个?
- hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控
- 总结与整理:Ubuntu系统下安装、配置Nginx及其他注意事项
- 超一流 | 从XLNet的多流机制看最新预训练模型的研究进展
- 最全蚂蚁金服高级Java面试题目(3面)
- 面试-重写基础功能函数
- LINQ to SQL语句(1)之Where
- Postman----Presets(预先设置)的使用
- 06006_redis数据存储类型——String
- PHP中一些有用的函数