golang部分语法介绍(range关键字,函数定义+特性,结构体初始化+结构体指针/方法)

目录

golang语法

range关键字

介绍

使用

原理

函数

介绍

定义

特性

结构体

介绍

初始化

结构体指针

结构体方法

方法接收者


golang语法

range关键字

介绍

用于遍历数组(array)、切片(slice)、映射(map)、通道(channel)和字符串(string)

  • 返回索引和值或键和值

使用

i,num :=range nums

  • 可以将它运用到for循环中,用于遍历元素

原理

底层实现 依赖于不同数据结构的内部表示 ,其本质是遍历 底层的数据结构

  • Go 语言编译器会将range语法转换为普通的for循环,并使用不同的方式访问数据

数组中:

映射中:

函数

介绍

函数可以有零个或多个参数,并且可以返回零个或多个结果

  • 变量类型为后置写法(c/c++是前置写法)
  • 多个返回值之间用逗号分隔 (一般为返回结果+错误信息)

定义

func 函数名(变量名 变量类型, ...)返回值类型 {}

特性

允许简写参数类型,如果多个参数具有相同类型,可以省略重复的类型声明

支持变长参数列表

  • 变参参数放在参数列表的最后,使用 ...表示

支持命名返回值

  • 可以在函数声明时为返回值指定名字
  • 使用命名返回值时,可以省略return语句中的返回值

结构体

介绍

与面向对象语言中的类类似,结构体为数据提供了一个封装的方式

结构体使用type关键字来定义

  1. type 结构体名 struct{
  2. 变量名 类型
  3. 变量名 类型
  4. }

初始化

字面量初始化:

  • a := 结构体名{变量名 : value,...}

或者也可以隐藏变量名:

  • 只不过这样就得对应顺序进行初始化

也可以只初始化一部分变量,然后再手动赋值:

  • 对象名.变量名 = value

可以作为参数,分为对象/指针的区别,和c类似

结构体指针

结构体方法

类似类的成员函数

func (结构体对象名 结构体名) 函数名(变量名 变量类型, ...) 返回值类型 {}

  • 在外部可以使用结构体对象名.函数名 来调用方法
方法接收者

可以是值类型 或指针类型 ,这决定了方法如何访问和操作结构体数据

  • 方法的接收者是结构体的值类型 ,那么该方法操作的是结构体的副本 (方法内的操作不会改变原始结构体的值,任何修改只会作用于副本)
  • 方法的接收者是结构体的指针类型 ,那么该方法操作的是原始结构体的地址 (方法对结构体字段的修改将直接影响原始数据,因为方法通过指针访问的是结构体的内存地址)
相关推荐
Zenova EdgeOS10 小时前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
JavaPub-rodert11 小时前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
microrain18 小时前
SagooIoT 的数据接入层只有四张表,却能接住三种外部数据
物联网·golang·数据建模·sagooiot
fly-iot18 小时前
【FDE知识库】(4):企业知识库怎么选型,开源知识库分享几个,选择开源协议友好的版本,开发wiki-go项目
golang·开源·开源协议
福大大架构师每日一题21 小时前
excelize v2.11.1发布:Go 1.26.0起步,16项安全修复与嵌入对象能力全面升级
开发语言·安全·golang
小小龙学IT1 天前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
十二同学啊1 天前
Go 工程化详解:项目结构、代码规范、测试体系与 CI/CD 实践
ci/cd·golang·代码规范
利威尔xu1 天前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
利威尔xu1 天前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
FungLeo1 天前
成为全栈·Go 后端篇·从 Node SQLite 到 PostgreSQL:把迁移做成独立交付物
postgresql·golang·sqlite·go·数据库迁移·成为全栈