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

随机推荐

  1. Spring Boot Service注入为null mapper注入为null @Component注解下@Value获取不到值 WebsocketServer类里无法注入service

    最近搞了一下websocket前台(这个网上有很多的教程这里就不班门弄斧啦) 以及前后台的交互 和后台的bug(搞了两天) 也是状态频发 bug不断 下面说一说问题. Websocket主类里面无法注 ...

  2. 【leetcode】937. Reorder Log Files

    题目如下: You have an array of logs.  Each log is a space delimited string of words. For each log, the f ...

  3. Linux eth0, eth1, ..., eth%d 的生成【转】

    转自:https://blog.csdn.net/xiruanliuwei/article/details/78765255 一直很好奇,Linux下的eth0, eth1,eth2等是如何生成的~ ...

  4. hdu1574 I Hate It (线段树,查询区间最大值)

    Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟 ...

  5. 腾讯云ubuntu16.04安装MySql5.7未提示密码设置且无法登陆解决

    一.安装 sudo apt-get update sudo apt install mysql-server 二.修改密码 1.由于安装过程中未提示要设置密码,且使用sudo mysql_secure ...

  6. Spring事物的传播

    spring的事物对于同一个类内部调用是不会生效的. 比如一个ServiceA,里面有个方法x()和y().其中x没有配置事物,而y配置的有实物.如果是一个没有事物的ServiceB调用了Servic ...

  7. grep 后加单引号、双引号和不加引号的区别

    请尊重版权,原文地址:https://blog.csdn.net/cupidove/article/details/8783968 单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为 ...

  8. StaticInjectorError[Http]:

    报错:AppComponent.html:28 ERROR Error: StaticInjectorError[Http]: StaticInjectorError[Http]: 解决方法:

  9. Rust <9>:启用第三方库的备选 features

  10. 力扣算法题—144Binary Tree Preorder Traversal

    Given a binary tree, return the preorder traversal of its nodes' values. Example: Input: [1,null,2,3 ...