【Go】Go语言学习笔记-4-进阶

news/2023/12/1 7:53:38

Go有指针,然后却没有指针运算,目标是修改一个传入函数的参数的值得效率和可能性,因此它们更像是引用而不是C的指针。

1.内存分配

Go有两个内存分配原语,make和new。

new分配内存

new(T)分配了零值填充的T类型的内存空间,并且返回其地址,一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。

make分配内存

make(T, args)只能创建slice, map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。

例如

  • make([]int, 10, 100)分配了100个整数的值,然后用长度10和容量100创建了slice结构指向数组的前10个元素。

  • new([]int)返回指向新分配的内存的指针,而零值填充的slice结构指向nil的slice值。

构造函数与复合声明

有时候零值不能满足需求,必须要有一个用于初始化的构造函数,可以通过复合声明实现。
从复合声明中获取地址,意味着告诉编译器在堆中分配空间,而不是栈中。

2. 定义自己的类型

Go允许定义新德类型,通过关键字type实现,例如type foo int。
创建更复杂的类型需要用到struct关键字。

转换

type类型的转换。

组合

文档里竟然没写完。


http://www.niftyadmin.cn/n/4591030.html

相关文章

Java自带优秀工具

Java自己有很多优秀的调试工具,可以帮助分析系统的漏洞,瓶颈,这里列举几个自己常用的命令: jps -l查看现有的java进程jps -l 显示所有正在运行的java进程idjstack 查看Java线程jstack -l pid; 做thread dump,直接打印在…

呵呵,刚来这里以后就来这里记录

呵呵,刚从朋友介绍那来到这里,希望这里能记录点东西。。 今天是周末,明天就要睡个大头觉了!!转载于:https://blog.51cto.com/izmablog/148318

Android FrameWork 系统源码调试

这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会用到。 好了&a…

选择线程数目时谨慎考虑线程切换开销

最近为了使用更加高效的connection jdbc pool,在网上发现有个叫hikariCP的貌似不错,里面有篇文章讲了关于配置pool size的魔法,不是越多越好,而是应该恰到好处。 https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-S…

Could not load type 'System.DateTimeOffset'的问题

如果在运行程序时遇到如标题的异常,那么表示没有安装.NET Framework 2.0的SP1 http://www.microsoft.com/Downloads/details.aspx?familyid79BC3B77-E02C-4AD3-AACF-A7633F706BA5&displaylangen 这种情况通常发生在,如果你是用VS2008开发的程序&…

在oracle数据库本地创建用户表空间

1、创建用户 dppro(用户)create user dppro(用户) identified by dppro(密码);2、创建一个新的表空间(专属于dppro项目) create tablespace dppro_tablespace(表空间) datafile D:\oracle_tablespace\dppro.DBF size …

电路中各种地的区别及处理

数字地与模拟地区别 二者本质是一直的,就是数字地和模拟地都是地。要明白为什么要分开,先听一个故事;我们公司的商务楼,2楼是搞模拟的,3楼是搞数字的,整幢楼只有一部电梯,平时人少的时候还好办…

Java自带优秀工具2

Jconsole 是原生java自带的系统monitor工具,可以连接本地也可以连接远端的java process,连接java process之后可以查看应用的CPU,内存,线程数,GC情况,可以帮忙查看系统是否有死锁的现象,还可以…

测试工程师必须明白的一些事儿

2019独角兽企业重金招聘Python工程师标准>>> 研发是不看需求文档的 产品经理的需求是不断变更的 测试用例在测试过程中的作用是很小的 产品发布是一定要弄明白发布流程的 领导是不看过程的 转载于:https://my.oschina.net/jiangbianwanghai/blog/503789

JQuery推荐插件(200+)

概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及的,它兼容 CSS3,还兼容各种浏览器(IE 6.0, FF 1.5, Safari 2.…

ubuntu下adb devices下找不到设备

Ubuntu使用adb shell有时候会找不到设备,配置adb的直接看Step4即可,那一步也许是问题的关键。 另外请先打开设置中的usb 调试。 Step 1: 在终端运行 lsusb,找到对应设备的一行: Bus 003 Device 085: ID 0fce:5146 Sony Ericsson Mobile Co…

JMeter使用记录1 -- JDBC测试

场景:使用jmeter对web应用和mysql数据库进行压力测试 JMeter是一款非常强大的测试工具,可以用来测试web,数据库,从07年用过之后一直对它情有独钟,下面记录下在一个项目中对它的简单使用。 项目分数据库测试和web应用测…

zabbix企业应用之监控动作是否有被关闭

当前我监控1000的服务器,动作有近200个,监控方式有短信、邮件与语音报警电话,如果动作配置有问题或者某个动作被关闭,就会导致某些报警无法触发,不能及时收到报警通知并处理。而且zabbix配置用户权限的时候&#xff0c…

实战Java内存泄漏问题分析 -- hazelcast2.0.3使用时内存泄漏 -- 1

公司当年有一个自己缓存集群用户session的Java library,是基于hazlcast2.0.3实现的,最近在customer site集群环境中某个blade报了Out of Memory Exception, 其他blades都正常,马上用jrockit jrcmd命令dump了堆和线程进行分析。 printf “###…

打起精神来

我不是班干,却要像一个班干一样在班级里做事,仅仅因为班上女生中只有我一个人愿意无偿为班级做些事情,仅仅因为那几个男生说相信我,仅仅因为女生中只有我一个人进了党校。。。。。。这周刘同学说要搞团日活动,去凌江公…

linux 解压常用命令

tar -xzvf sysconfig.tar.gz -c 创建新的文档。 -v 显示详细的tar处理的文件信息 -f 要操作的文件名 -r 表示增加文件,把要增加的文件追加在压缩文件的末尾。 -t 表示查看文件,查看文件中的文件内容 -x 解压文件。 -z:有gzip属性的 -j:有bz2属性的…
最新文章