如何理解Golang中的range语句

Python08

如何理解Golang中的range语句,第1张

你把它理解为遍历么,结合for循环。

假设有一个初始化好的数组(table)或者切片(slice)的table,且table长度为10:

for i, value := range table {

    fmt.Printf("i=%v, value=%v\n", i, value)

}

则会执行fmt.Printf10次,且这10次的【i】的值分别是从0~9,也就相当于

for i := 0 i < len(table) i++ {

    fmt.Printf("i=%v, value=%v\n", i, table[i])

}

如果把上边的数组或者切片换成map

for key, value := range table {

    fmt.Pritnf("key=%v, value=%v\n", key, value)

}

则类似上边的过程把map里边的key-value键值对一 一遍历

仅为个人阅读时遇到的困惑的理解,希望友善讨论

2021.6.25

《GO语言圣经》-《GO程序设计语言》

P5

在命令行中运行

go run main.go 一 二三 四

得到的结果

在命令行中运行

go run main.go 一 二三 四

得到的结果

range 获取一个范围,

有两个返回值,在本例中分别是 i 和 arg 。

第一个返回值 i 总是从0开始的,和 range 取范围的值(也就是本例中的 os.Args )无关。(也就是本例中 os.Args[1:] 虽然是从 os.Args 的1值开始取的,但是在 range 中还是0)。

第二个返回值 arg 是切片的结果。

我理解的: range 将 os.Args 切成一个数组,先返回数组下标,再返回数组内容。

本文介绍一些Go语言的基础语法。

先来看一个简单的go语言代码:

go语言的注释方法:

代码执行结果:

下面来进一步介绍go的基础语法。

go语言中格式化输出可以使用 fmt 和 log 这两个标准库,

常用方法:

示例代码:

执行结果:

更多格式化方法可以访问https://studygolang.com/pkgdoc中的fmt包。

log包实现了简单的日志服务,也提供了一些格式化输出的方法。

执行结果:

下面来介绍一下go的数据类型

下表列出了go语言的数据类型:

int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。

常量是在程序编译时就确定下来的值,程序运行时无法改变。

执行结果:

执行结果:

Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符。

算术运算符:

关系运算符:

逻辑运算符:

位运算符:

赋值运算符:

指针相关运算符:

下面介绍一下go语言中的if语句和switch语句。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍。

if语法格式如下:

if ... else :

else if:

示例代码:

语法格式:

另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true。

示例代码:

执行结果:

下面介绍几种循环语句:

执行结果:

执行结果:

也可以通过标记退出循环:

--THE END--