go for循环下使用return的问题汇总,打印顺序颠倒问题
func main() {
model.DBNew("./conf.toml")
var user []model.CoreGrained
model.DB().Find(&user)
for _, i := range user {
var gg []string
if err := json.Unmarshal(i.Group, &gg); err != nil { //错误写法 正确做法 err := json.Unmarshal(i.Group, &gg) if err != nil {。。。}
fmt.Println(gg) //打印空值
for _, v := range gg {
for _, vv := range strings.TrimSpace(v) {
if vv == 'c' {
fmt.Println("true")
return //注意使用不当造成问题,这个是for循环没完全执行就半路return返回了
}
}
}
}
}
}
问题1:
func main() {
model.DBNew("./conf.toml")
var user []model.CoreGrained
model.DB().Find(&user)
for _, i := range user {
var gg []string
err := json.Unmarshal(i.Group, &gg)
if err != nil {
log.Print(err)
}
fmt.Println(gg) //看这里的顺序
for _, v := range gg {
for _, vv := range strings.TrimSpace(v) {
if vv == 'B' { //不匹配
fmt.Println("true")
return //注意看这里
}
}
}
}
}
运行结果:
/mnt/c/Users/Administrator/AppData/Local/Temp/GoLand/___75go_build_TestPrt_go_linux
[ admin]
[c051d777-5c41-4e7d-9379-2054851803c4]
问题2
func main() {
model.DBNew("./conf.toml")
var user []model.CoreGrained
model.DB().Find(&user)
for _, i := range user {
var gg []string
err := json.Unmarshal(i.Group, &gg)
if err != nil {
log.Print(err)
}
fmt.Println(gg)
for _, v := range gg {
for _, vv := range strings.TrimSpace(v) {
if vv == 'a' { //关键是这里 ,匹配
fmt.Println("true")
return //注意看这里
}
}
}
}
}
/mnt/c/Users/Administrator/AppData/Local/Temp/GoLand/___291go_build_TestPrt_go_linux
[ admin] //只打印一个admin,?执行顺序被颠倒
true
再看下图取消return
问题3
func main() {
model.DBNew("./conf.toml")
var user []model.CoreGrained
model.DB().Find(&user)
for _, i := range user {
var gg []string
err := json.Unmarshal(i.Group, &gg)
if err != nil {
log.Print(err)
}
fmt.Println(gg)
for _, v := range gg {
for _, vv := range strings.TrimSpace(v) {
if vv == 'c' { //匹配
fmt.Println("true")
return //看这里
}
}
}
}
}
/mnt/c/Users/Administrator/AppData/Local/Temp/GoLand/___111go_build_TestPrt_go_linux
[ admin]
[c051d777-5c41-4e7d-9379-2054851803c4]
true

全部被打印
只返回了一个e
分类:
GO
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2022-01-20 Python模块之pexpect 相当于shell的expect
2022-01-20 容器优雅关闭方案,进程id为1
2022-01-20 深入理解docker信号机制以及dumb-init的使用