新年学新语言Go之四

一、前言

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

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

二、自定义类型

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

三、方法

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

1、函数

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

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

2、方法

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

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

Go中有两种类型接收得

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

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

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

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

相关推荐
Eiceblue4 分钟前
通过 C# 将 HTML 转换为 RTF 富文本格式
开发语言·c#·html
故渊ZY5 分钟前
Java 代理模式:从原理到实战的全方位解析
java·开发语言·架构
leon_zeng012 分钟前
Qt Modern OpenGL 入门:从零开始绘制彩色图形
开发语言·qt·opengl
会飞的胖达喵13 分钟前
Qt CMake 项目构建配置详解
开发语言·qt
ceclar12315 分钟前
C++范围操作(2)
开发语言·c++
一个尚在学习的计算机小白15 分钟前
java集合
java·开发语言
IUGEI24 分钟前
synchronized的工作机制是怎样的?深入解析synchronized底层原理
java·开发语言·后端·c#
z***I39428 分钟前
Java桌面应用案例
java·开发语言
间彧38 分钟前
GraalVM Native Image:跨平台能力与编译模式深度解析
后端
间彧42 分钟前
GraalVM Native Image 与传统 JVM 内存管理:云原生时代的技术选型指南
后端