Golang基础之range
go语言中range关键字
参考 https://www.php.cn/be/go/500181.html
go语言中range关键字
参考 https://www.php.cn/be/go/500181.html
/*
Go 语言中 range 关键字用于for循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素
*/
package main
import (
"fmt"
)
type mystruct struct {
Bar string
}
func main() {
//mystruct{"bar1"},直接初始化mystruct
mylist := []mystruct{mystruct{"bar1"}, mystruct{"bar2"}, mystruct{"bar3"}}
//key是for range 循环返回的键
//value是for range 循环返回的值的拷贝。
//注意 value 是一个数组元素值的拷贝, 而不是数组元素本身
for key, value := range mylist {
value.Bar = "初始化的值:" + string(key)
}
//mylist内的结构体内容并没有改变
fmt.Println(mylist) //输出结果是:[{bar1} {bar2} {bar3}]
/***********************************************
如果想修改数组元素需要使用下标进行修改
//vv循环代表一个结构体,mylist里面有三个结构体
************************************************/
for i, vv := range mylist {
mylist[i].Bar = "改变了:" + string(i)
fmt.Printf("原来的:%s\n",vv.Bar)
fmt.Printf("改变的:%s\n",mylist[i].Bar)
}
fmt.Println(mylist)
fmt.Println("###############################")
//测试下面的例子
//for range 中的 v 这个副本只会初始化一次。
List := []int{1, 2, 3}
for k, v := range List {
fmt.Printf("地址没变---------------------:%p\n",&v) //v地址始终不变
fmt.Printf("输出结果key是%d :value: %d\n",k,v)
}
var (
v1 int
a1 int
b1 int
c1 int
)
a1=1
v1=a1
b1=2
v1=b1
c1=3
v1=c1
//v的地址始终不变
fmt.Println(v1)
//遍历字符串——获得字符
var str = "hello 你好"
for key, value := range str {
fmt.Printf("key:%d value:0x%x\n", key, value)
}
for i := 0; i < 10; i++ {
fmt.Printf("--:%d", i)
}
}
设备的序列号SN,生产厂商等,是不是也是写入BIOS芯片中的,在现代操作系统中无法修改
source insight 3.5版本也可以这样支持golang?
感谢大佬的分享,希望加个微信好友,我的微信:TobeBuda
我是C语言程序员
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?