当前位置:网站首页>Go语言结构体Go range怎么使用
Go语言结构体Go range怎么使用
2022-07-29 15:46:00 【亿速云】
Go语言结构体Go range怎么使用
这篇文章主要介绍“Go语言结构体Go range怎么使用”,在日常操作中,相信很多人在Go语言结构体Go range怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言结构体Go range怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
正文
有 C 相关经验,结构体还是比较容易理解的,语法格式如下所示:
type struct_variable_type struct { member definition member definition ... member definition}上述语法格式的关键字是 struct 和 type,struct_variable_type 是结构体名称,例如我们声明一个【人】的结构体,有姓名,有年龄,有性别。
package mainimport "fmt"// 声明结构体type People struct { name string age int sex int}func main() { //使用结构体 people := People{ "橡皮擦", 18, 0} fmt.Println(people)}在编写的时候要注意语法格式,其中结构体的使用代码建议放在一行,或者右大括号紧跟最后一个元素。
使用结构体也可以携带元素名,即下述写法。
//使用结构体people := People{name: "橡皮擦", age: 18, sex: 0}fmt.Println(people)访问结构体成员 使用 结构体.成员名 即可,当然也可以用该办法进行赋值。
//使用结构体var people1 People// var people2 Peoplepeople1.name = "橡皮擦"people1.age = 18people1.sex = 1fmt.Println(people1)
Go Range
作为一个 Python 程序员,关键字 range 是非常熟悉的,在 Go 中 range 关键字可以用于 for 循环,用于数组它返回元素的索引和值,在后续学习的集合中返回键值对。
range 用于数组的语法格式如下所示:
for i,value := range a_array{ // TODO}结合语法格式,编写下述代码:
package mainimport "fmt"var a_array = []int{1, 2, 3, 4, 5, 6, 7, 8}func main() { for i, value := range a_array { fmt.Printf("索引:%d,值:%d\n", i, value) }}运行代码输出如下信息:
索引:0,值:1
索引:1,值:2
索引:2,值:3
索引:3,值:4
索引:4,值:5
索引:5,值:6
索引:6,值:7
索引:7,值:8
如果将 range 作用于字符串,可以对其每个字符进行迭代输出。
package mainimport ( "fmt")func main() { var str string = "xiangpica" for k, v := range str { fmt.Println(k, string(v)) }}上述 str 中的内容为纯英文,k 值每次+1。
0 x
1 i
2 a
3 n
4 g
5 p
6 i
7 c
8 a
如果 str 中包含中文,k 值每次 +3,代码如下:
func main() { var str string = "橡皮擦" for k, v := range str { fmt.Println(k, string(v)) }}输出结果如下:
0 橡
3 皮
6 擦
如果是中英文混拼,出现的结果会更加有趣。
0 x
1 i
2 a
3 n
4 g
5 橡
8 p
9 i
10 皮
13 c
14 a
15 擦
这里其实可以得到一个结论,range 迭代是的 Unicode,而不是字节,返回值是 UTF-8 编码第 1 个字节的索引,所以索引值有可能并不连续。
在编写代码的时候,如果不需要索引,只保留元素,可以使用废弃占位符,代码如下:
var str string = "xiang橡pi皮ca擦"for _, v := range str { fmt.Println(string(v))}到此,关于“Go语言结构体Go range怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
边栏推荐
猜你喜欢

Turbine Aggregation Monitoring

干货!如何使用仪表构造SRv6-TE性能测试环境

See you in shenzhen!Cloud native to accelerate the application building special: see cloud native FinOps, SRE, high-performance computing scenario best practices

教程篇(7.0) 07. 诊断和故障排除 * FortiClient EMS * Fortinet 网络安全专家 NSE 5

CAS原理以及ABA问题解决Demo-代码

CAN报文:数据帧详解

【GoLang】Sync lock

【C语言刷题】Leetcode268丢失的数字

异步请求池的实现

参与一个rk3399的一起学习班级
随机推荐
ES6 from entry to master # 11: the Map data type
生产者消费代码
Linux下载安装mysql5.7版本教程最全详解
虚拟远程桌面
AI全流程开发难题破解之钥
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
Shell script programming - operation
国内EDA领导者芯和半导体完成最新一轮超亿元融资
BUUCTF——MISC(流量分析)
远程桌面工具推荐
兆易创新2021年将从长鑫存储采购3亿美元DRAM产品
店铺信息管理系统
I/O Code Practice
Contribution and writing required documents - OpenHarmony developer documentation style guide
uni-app深入学习之模板运用
PL5902 SOT-23-5 高效1MHz2A同步DC-DC降压调节器 百盛电子代理商
MySQL数据库安装配置保姆级教程(以8.0.29为例)有手就行
Steam CMD是什么?Steam CMD怎么用?
MLX90640 红外热成像仪开发笔记(九)
上海移动基于亚信科技AntDB完成核心账务数据库的国产化替换