go new
go new
尽管没有构造函数,go有一个内置的函数new
,可以用来分配一个类型需要的内存。new(X)
和&X{}
是等效的:
goku := new(Saiyan)
// 等效
goku := &Saiyan{}
用那种方式取决于你,但是你会发现,当需要去初始化结构体字段时,大多数人更喜欢使用后者,因为后者更易读:
goku := new(Saiyan)
goku.name = "goku"
goku.power = 9001
//对比
goku := &Saiyan {
name: "goku",
power: 9000,
}
无论你选择那种方式,如果你选择上面的工厂模式,你可以隐藏一些代码细节,但是需要留意任何内存分配细节。
本文转自:http://codingdict.com/article/22526
随机推荐
- JS中实现replaceAll的方法
第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符. 而str.replace ...
- 【leetcode】910. Smallest Range II
题目如下: 解题思路:我的思路是先找出最大值.对于数组中任意一个元素A[i]来说,如果A[i] + K 是B中的最大值,那么意味着从A[i+1]开始的元素都要减去K,即如果有A[i] + K > ...
- QT多线程学习
一.想要使用Qthread必须先创建,继承Qthread的类. #ifndef THREADTEST_H #define THREADTEST_H #include <QThread> # ...
- SQL中LEFT JOIN ON AND 与 LEFT JOIN ON WHERE的区别
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. ON...WHERE ' order by ts.id SQL执行过程: 生成临时表: ON条件: ...
- 初学Linux基本的命令操作应当记牢
Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touc ...
- linux下svn安装、配置及钩子
一.安装 直接运行命令用YUM安装: yum install subversion -y 二.创建svn版本库目录 mkdir -p /var/svn/svnrepos 三.创建版本库 生成文 ...
- 【Java架构:基础技术】一篇文章搞掂:Gradle
前言 Gradle是什么: Gradle提供了一个域特定语言(DSL),用于描述构建 它使用 Groovy 语言,使其更容易来形容和构建 Gradle 中的每一个构建脚本使用UTF-8进行编码保存,并 ...
- php下载
生成迅雷下载链接 $url = "http://www.xxx.com/xxx/test.jpg"; echo "thunder://".base64_enco ...
- 1. 什么是Prometheus
什么是Prometheus Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包 .自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有一个非常 ...
- 2019ccpc网络赛hdu6703 array(线段树)
array 题目传送门 解题思路 操作1是把第pos个位置上的数加上\(10^7\),操作2是找到区间[1,r]中没有且大于k的最小的数.注意到k的范围是小于等于n的,且n的范围是\(10^5\),远 ...