新年学新语言Go之四

一、前言

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

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

二、自定义类型

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

三、方法

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

1、函数

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

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

2、方法

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

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

Go中有两种类型接收得

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

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

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

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

相关推荐
Thomas_YXQ12 分钟前
Unity3D Overdraw性能优化详解
开发语言·人工智能·性能优化·unity3d
北辰浮光16 分钟前
[springboot]SSM日期数据转换易见问题
java·spring boot·后端
lanbing18 分钟前
PHP 与 面向对象编程(OOP)
开发语言·php·面向对象
yzx99101319 分钟前
Gensim 是一个专为 Python 设计的开源库
开发语言·python·开源
木梓辛铭23 分钟前
Spring Cache的详细使用
java·后端·spring
麻雀无能为力37 分钟前
python自学笔记2 数据类型
开发语言·笔记·python
招风的黑耳1 小时前
Java集合框架详解与使用场景示例
java·开发语言
xrkhy1 小时前
java中XML的使用
xml·java·开发语言
抽风的雨6101 小时前
【python基础知识】Day 27 函数专题2:装饰器
开发语言·python
martian6652 小时前
医学影像系统性能优化与调试技术:深度剖析与实践指南
开发语言·系统安全·dicom