新年学新语言Go之四

一、前言

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

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

二、自定义类型

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

三、方法

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

1、函数

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

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

2、方法

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

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

Go中有两种类型接收得

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

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

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

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

相关推荐
Re.不晚14 分钟前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
老秦包你会16 分钟前
Qt第三课 ----------容器类控件
开发语言·qt
凤枭香19 分钟前
Python OpenCV 傅里叶变换
开发语言·图像处理·python·opencv
ULTRA??23 分钟前
C加加中的结构化绑定(解包,折叠展开)
开发语言·c++
码农派大星。23 分钟前
Spring Boot 配置文件
java·spring boot·后端
远望清一色39 分钟前
基于MATLAB的实现垃圾分类Matlab源码
开发语言·matlab
confiself1 小时前
大模型系列——LLAMA-O1 复刻代码解读
java·开发语言
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】Thread类的方法&线程生命周期
java·开发语言·java-ee
杜杜的man1 小时前
【go从零单排】go中的结构体struct和method
开发语言·后端·golang
幼儿园老大*1 小时前
走进 Go 语言基础语法
开发语言·后端·学习·golang·go