• 技术文章 >后端开发 >Golang

    go语言有没有while

    青灯夜游青灯夜游2023-01-07 14:20:50原创87

    go语言中没有while关键字,不支持while和do-while循环结构。从功能上讲,但凡while语句能做的事情,for语句也可以实现,因此Go语言统一了for语句和while语句。且Go的开发团队有比较严重的洁癖,while并不是一个必要选项,提供多种方式让开发者选择,容易让开发者迷路,产生选择困难;所以干脆不给选择的机会,强制让大家统一风格。

    本教程操作环境:windows7系统、GO 1.18版本、Dell G3电脑。

    go语言中没有while关键字,,不支持while和do-while循环结构。

    循环语句用于重复执行某些程序中的语句。

    编程语言中常见的循环语句包括while语句、do-while语句和for语句。但是Go语言中仅有for语言,没有while语句。从功能上讲,但凡while语句能做的事情,for语句也可以实现。因此Go语言统一了for语句和while语句。

    且Go的开发团队有比较严重的洁癖,while 并不是一个必要选项,提供多种方式让开发者选择,容易让开发者迷路,产生选择困难;所以干脆不给选择的机会,强制让大家统一风格。

    for语句

    Go语言的for语句一共有三种:

    第一种:

    for init; condition; post {
    	...	
    }

    以上三点等价于其他编程语言的for语句,因此第一种写法等价于其他语言的for语句。

    第二种:

    for condition {
    	...
    }

    第二种写法等价于其他语言的while语句。因为Go的for语句使不写括号的,因此删掉initpost就完全等价于了while语句。因此Go没有引入while这个关键字,直接使用for语句实现while语句。

    第三种:

    for {
    	...
    }

    第三种写法等价于其他语言的for(;;),也等价于while(true)

    实例:

    package main
    
    import "fmt"
    
    func main() {
    	res := 1
    	n := 10
    
    	for i:=1; i<=n; i++ {
    		res *= i
    	}
    	fmt.Println(n,"的阶乘是",res)
    }
    
    // 10 的阶乘是 3628800

    for-each range

    Go语言中for循环的range格式可以迭代slice、map、数组、字符串等类型,格式如下:

    for k, v := range oldMap {
    	newMap[k] = v
    }

    实例:

    package main
    
    import "fmt"
    
    func main() {
    	nums := [5]int{1, 2, 3, 4, 5}
    	for i,e := range nums {
    		fmt.Println("索引", i, "位置上的数值为", e)
    	}
    }
    
    // 索引 0 位置上的数值为 1
    // 索引 1 位置上的数值为 2
    // 索引 2 位置上的数值为 3
    // 索引 3 位置上的数值为 4
    // 索引 4 位置上的数值为 5

    同Python,Go语言也使用下划线_来接住不需要的返回值。

    for _,e := range nums {
    	...
    }

    【相关推荐:Go视频教程编程教学

    以上就是go语言有没有while的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:go语言
    上一篇:go语言怎么进行强制类型转换 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • go语言只能开发服务端吗• go语言是动态语言吗• go语言的匿名函数定义方法是什么• Go语言中类型与接口有什么关系• go语言的init()方法有什么用• go语言的beego是什么
    1/1

    PHP中文网