golang 中使用 goto 跳出 if 语句

2020-07-22 18:04:59 +08:00
 kayseen

正在学习 golang, 碰到了一个关于 goto 的问题 比如 if 条件判断, 如果不满足条件判断, goto 到指定位置

func main() {

	fmt.Println("1")

	if 1 > 2 {
		goto End
	}

	fmt.Println("2")

End:
	fmt.Println("3")

}

真正执行的结果是:

1
2
3

预期的结果应该是:

1
3

也就是说定义的End:部分, 不管你有没有goto到这里都会执行, 请问有什么方式可以选择如果不goto就跳过这部分的执行吗

4771 次点击
所在节点    Go 编程语言
28 条回复
SingeeKing
2020-07-22 23:56:19 +08:00
Go 的 goto 作用只是在多层循环中跳出多级,不是 C 的无限制的跳转,理论上 goto 应当是只定义于一个循环( for 关键字)前的
explore365
2020-07-23 06:34:18 +08:00
func main() {

fmt.Println("1")

if 1 > 2 {
nitemegeiwotiao End
}

fmt.Println("1>2??? tiaonima!")

End:
fmt.Println("233333333333")

}
si
2020-07-23 09:25:32 +08:00
条件反了,if 是条件为 true 执行,如果要条件不成立的时候执行,就是要条件为 false 到时候执行,那要把条件反过来。
stephanew
2020-07-23 10:40:57 +08:00
啊这...
bruce0
2020-07-23 11:15:24 +08:00
if 1>2 这个分支没有进入,所以就没有执行 goto

标签部分的代码 会被顺序执行的, 执行 goto 会直接跳到标签处执行,如果整个过程中没有执行过 goto, 当代码顺序执行到标签处时,也会执行

如果想不出发 goto 就不执行 标签处的代码, 可以使用 if 加标志 变量 判断
whi147
2020-07-23 15:18:30 +08:00
建议用 do while(0) 想跳出的地方用 break
CodeCodeStudy
2020-07-23 16:24:02 +08:00
1 大于 2 ?
juziss
2020-07-23 18:29:20 +08:00
你这......不会是骗回复吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692272

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX