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就跳过这部分的执行吗

4988 次点击
所在节点    Go 编程语言
28 条回复
stevenbipt
2020-07-22 18:11:08 +08:00
1>2 这个逻辑导致没有进 if 里面吧?1<2 就能得到预期效果,你代码可能有一丢丢问题
chiu
2020-07-22 18:12:56 +08:00
expect 的应该是
if 1 < 2 ?
phpfpm
2020-07-22 18:15:58 +08:00
你可能需要再学一下学前班课程。
kkeiko
2020-07-22 18:16:00 +08:00
标记本来就是代码的一部分,当然会执行,只不过给你一个快捷跳转的机会而已。
Hoshizora
2020-07-22 18:16:24 +08:00
及时 return 或者退出
pushback
2020-07-22 18:18:13 +08:00
@phpfpm 哈哈哈哈
jiangbingo
2020-07-22 18:18:36 +08:00
```go

package main

import (
"fmt")
func main() {

fmt.Println("1")
flag := false
if 1 > 2 {
flag = true
goto End
}

fmt.Println("2")

End:
if flag == true{
fmt.Println("3")
}


}
````

```
λ go run goto.go
1
2
```
kxiaong
2020-07-22 18:19:17 +08:00
把 goto 当 if..else...用了。
但是 label 显然不是那个 else 部分。
wysnylc
2020-07-22 18:19:35 +08:00
@phpfpm #3 然后再学下小学课程 <不要使用 goto>
jiangbingo
2020-07-22 18:20:58 +08:00
import (
"fmt")
func main() {

fmt.Println("1")
if 1 > 2 {
goto End
}

fmt.Println("2")
return

End:
fmt.Println("3")
}
useben
2020-07-22 18:37:02 +08:00
go 说, 这个锅我不背... 建议从语言基础学起, 额, 这已经是基础了...
raaaaaar
2020-07-22 18:41:11 +08:00
go 里有 goto 么,我还没注意到。。
byzf
2020-07-22 18:46:05 +08:00
本想进来指点一番, 没想到长了见识.
xmge
2020-07-22 19:35:56 +08:00
额...........
labulaka521
2020-07-22 19:41:13 +08:00
如果你用 goland 会有提示的
16779242
2020-07-22 20:53:01 +08:00
if 1>2{…………}
这个括号里的内容怎么可能得到执行。。。。
GeruzoniAnsasu
2020-07-22 21:02:36 +08:00
从群里看到截图赶来劝转行
lxilu
2020-07-22 22:52:53 +08:00
合理使用 goto,不要到处 goto 写成汇编就好了
ace12
2020-07-22 23:05:28 +08:00
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
mritd
2020-07-22 23:18:19 +08:00
哈哈哈哈 兄弟可以的 我知道是体育老师教的

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

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

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

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

© 2021 V2EX