目录

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中结构体的初始化方法相关推荐

  1. go结构体初始化_golang中结构体的初始化方法(new方法)

    自定义一个结构体 type Rect struct { x, y float64 width, height float64 } 初始化方法: rect1 := new(Rect) rect2 := ...

  2. go结构体初始化_golang中结构体的初始化方法(new方法) | 学习笔记

    自定义一个结构体 1 2 3 4type Rect struct { x, y float64 width, height float64 } 初始化方法: 1 2 3 4rect1 :=new(Re ...

  3. golang 结构体断言_Golang中的reflect原理

    反射(reflect)是在计算机程序运行时,访问,检查,修改它自身的一种能力,是元编程的一种形式.在Java等语言中都很好地支持了反射.Golang也实现了反射,主要核心位于reflect包,官方文档 ...

  4. java发送c语言结构体_C语言中结构体直接赋值?

    在C语言中结构体变量之间可以进行赋值操作吗? 简单结构体的赋值 先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其进行赋值或初始化.简单结构体(不包含指针成员)直接赋值没有问题. 我们先下面 ...

  5. C语言结构体与C++中结构体和类的区别

    在C++中除了类中可以有构造函数和析构函数外,结构体中也可以包含构造函数和析构函数,这是因为结构体和类基本雷同,唯一区别是,类中成员变量默认为私有,而结构体中则为公有.注意,C++中的结构体是可以有析 ...

  6. c 结构体转byte_C中结构体和字节流的互换及内存对齐

    mystruct p; char buff[50]; memcpy(buff,&p,sizeof(p)); //把p的内容以字节形式拷贝到buff中 mystruct* q; q = (mys ...

  7. java为什么要初始化_JAVA中到底要怎么样初始化

    Java中的变量作用范围: 1. 类的属性,或者叫值域 2. 方法里的局部变量 3. 方法的参数 对于第一种变量,Java虚拟机会自动进行初始化.如果给出了初始值,则初始化为该初始值.如果没有给出,则 ...

  8. java用一个方法对变量初始化_java中怎么给变量初始化?

    展开全部 不同的变量初始化32313133353236313431303231363533e4b893e5b19e31333337613764方法不同. 变量包括:类的属性,或者叫值域 方法里的局部变 ...

  9. java中构造代码块、方法调用顺序问题

    1. 继承的概念 继承在本职上是特殊--一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...

最新文章

  1. zookeeper web ui--gt;node-zk-browser安装
  2. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能
  3. jpi多表联查_数据库两表联查、多表联查,多重联查
  4. 详解数据科学与数理统计的基本概念
  5. 1218 鼠标样式 cursor
  6. 华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”
  7. ASP.NET基础教程-C#与JAVA的比较
  8. Keil出现 err:Cannot read project file异常;err:点击Project闪退
  9. SENT协议学习总结
  10. 虚拟主机和服务器之间的区别
  11. table——caption
  12. 如何管理一盘散沙的团队?
  13. 使用两个FBO互相绑定实现PS液化效果
  14. ISE FPGA时钟系统
  15. dr.fone for android,Wondershare Dr.Fone for Android
  16. 图片怎么修改成750x750像素?
  17. php两个数字进行比较大小
  18. STM32掌机教程3,工程模板与带灯按键测试
  19. 查看文本是linux格式还是windows格式;以及实现linux文本格式和linux文本格式转换
  20. 安装指定版本的Mariadb数据库

热门文章

  1. xshell 6 连接debian系统拒绝了密码_Xshell中操作Linux的常用命令,你知道几个?
  2. hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控
  3. 总结与整理:Ubuntu系统下安装、配置Nginx及其他注意事项
  4. 超一流 | 从XLNet的多流机制看最新预训练模型的研究进展
  5. 最全蚂蚁金服高级Java面试题目(3面)
  6. 面试-重写基础功能函数
  7. LINQ to SQL语句(1)之Where
  8. Postman----Presets(预先设置)的使用
  9. 06006_redis数据存储类型——String
  10. PHP中一些有用的函数