新年学新语言Go之四

一、前言

任何编程语言都有类型系统,类型系统解决了数据的存取问题,它决定了使用这个类型需要开辟内存空间大小以及数据是如何存放的,也解决如何读出数据,因为在内存中相同二进制值不同类型的含义是不一样的,关于Go基础类型本篇就不做介绍了,和其它语言并无太大区别。

注:即使汇编语言指令操作也是区分类型的,有BYTE、WORD、DWORD等等。

二、自定义类型

使用关键词struct来创建自定义类型,struct(结构体)是由固定的独立字段组合起来声明的。结构体中的每个字段都由已知类型来声明的,这些已知类型可以是内置类型,也可以是用户自定义类型。

三、方法

在面向对象语言中一般叫方法,在面向过程语言中一般叫函数,其实方法和函数差不多就是一回事,但Go语言既不面向对象也不面向过程,那么它既有函数也有方法,两者还是有些区别的。

1、函数

函数的定义声明没有接收者,所以我们直接在go文件里go包之下定义声明即可.

注:函数要允许其它包调用,首字母大写就可以,作用类似于Java中的Public。

2、方法

方法在定义的时候,会在func和方法名之间增加一个参数,这个参数就是接收者,这个方法就是接收者方法。

注:从上面两个例子感觉Go中的方法和函数可以类比成Java中的类方法和静态方法。

Go中有两种类型接收得

  • 值接收者: 调用的时候使用的是副本,不会影响原来类型变量。

  • 指针接收者:可以简单理解为使用实际的值来调用方法,会改变原来变量。

注:指针接收者这个其实与Java中传引用的概念差不多。不过在Java开发中其实是不太建议对入参进行修改然后外部再使用,这样代码维护太困难了,但实际上为了方便很多人还是这用,我们项目中就有一些这样的代码。

PS:接口和嵌入类型等概念下一篇再介绍,今天让一哥们关注了我的CSDN,然后他看了我一些文章,说我很多文章看得不尽兴,裤子刚脱掉,然后就没了,哈哈,咱走的就是这个路线,希望客官用个3~5分钟可以把一个知识点看完。

相关推荐
白帽攻防录1 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛1 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓2 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
全栈弄潮儿2 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148112 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
码事漫谈2 小时前
DeepSeek 又更新!但怎么有个分数往下掉?
后端
吃饱了得干活2 小时前
用 PageHelper 同步数据到 ES:能跑,但这几个坑得先知道
后端·elasticsearch
金銀銅鐵2 小时前
[Java] 借助GUI展示class文件的内容(v1.0版本)
jvm·后端·ai编程
皮皮林5512 小时前
Java 导出 Excel 利器:JXLS
后端