新年学新语言Go之四

一、前言

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

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

二、自定义类型

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

三、方法

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

1、函数

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

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

2、方法

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

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

Go中有两种类型接收得

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

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

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

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

相关推荐
We་ct17 小时前
LeetCode 295. 数据流的中位数:双堆解法实战解析
开发语言·前端·数据结构·算法·leetcode·typescript·数据流
青槿吖17 小时前
第一篇:Redis集群从入门到踩坑:3主3从保姆级搭建+核心原理一次性讲透|面试必看
前端·redis·后端·面试·职场和发展·bootstrap·html
迷藏49417 小时前
**雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现**在物联网(IoT)飞速发展的今天,传统云
java·开发语言·python·物联网
大鹏说大话17 小时前
MySQL与PostgreSQL:底层架构差异与项目选型指南
开发语言
与硝酸17 小时前
从 Claude Code 源码看 Agent 系统设计:主流框架都在解决的问题与各自的解法
人工智能·后端
文心快码BaiduComate18 小时前
Comate AI IDE三大能力升级:支持语音输入& AI可操作浏览器 & Figma设计与代码双向转换
前端·后端·程序员
番茄去哪了18 小时前
任务调度功能实现
java·开发语言·spring boot
想你的液宝18 小时前
Spring Boot 中基于 AOP 的 Controller 统一日志打印方案
java·后端
天草二十六_简村人18 小时前
阿里云SLS采集jvm日志(上)
java·运维·数据库·后端·阿里云·容器·云计算
码事漫谈18 小时前
Skills 到底怎么快速入门?
后端