go语言快速入门:流程控制(7)

go语言中没有do-while,switch更加灵活,支持初始化子语句,这篇文章中将会就go的循环/分支等流程控制语句进行简单介绍。

if语句

写法和其他语言基本一致,不过多层else if的时候需要注意{要写在一行,否则通不过编译也无法进行go fmt

例子代码

[root@liumiaocn goprj]# cat basic-if.go
package main

func main() {

        //pattarn 1
        score := 75
        if score < 60 {
                println("Grade: D")
        } else if score < 70 {
                println("Grade: C")
        } else if score < 80 {
                println("Grade: B")
        } else if score <= 100 {
                println("Grade: B")
        } else {
                println("Grade: undefined")
        }

        //pattarn 2
        if score := 45; score < 60 {
                println("Grade: D")
        } else if score < 70 {
                println("Grade: C")
        } else if score < 80 {
                println("Grade: B")
        } else if score <= 100 {
                println("Grade: B")
        } else {
                println("Grade: undefined")
        }
}
[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-if.go
Grade: B
Grade: D
[root@liumiaocn goprj]#

switch-case语句

例子代码

[root@liumiaocn goprj]# cat basic-switch.go
package main

import "fmt"

func main() {
        //pattarn 1
        weekday := "FRI"
        switch weekday {
        case "MON":
                fmt.Println("Monday...")
        case "TUE":
                fmt.Println("Tuesday...")
        case "WED":
                fmt.Println("Wednesday...")
        case "THU":
                fmt.Println("Thursday...")
        case "FRI":
                fmt.Println("Friday...")
        case "SAT":
                fmt.Println("Saterday...")
        case "SUN":
                fmt.Println("Sunday...")
        default:
                fmt.Println("Default branche...")
        }

        //pattarn 2
        switch weekday := "SUN"; weekday {
        case "MON":
                fmt.Println("Monday...")
        case "TUE":
                fmt.Println("Tuesday...")
        case "WED":
                fmt.Println("Wednesday...")
        case "THU":
                fmt.Println("Thursday...")
        case "FRI":
                fmt.Println("Friday...")
        case "SAT":
                fmt.Println("Saterday...")
        case "SUN":
                fmt.Println("Sunday...")
        default:
                fmt.Println("Default branche...")
        }

        //pattarn 3
        score := 75
        switch {
        case score < 60:
                fmt.Println("Grade D...")
        case score <= 70:
                fmt.Println("Grade C...")
        case score <= 80:
                fmt.Println("Grade B...")
        case score <= 90:
                fmt.Println("Grade B...")
        default:
                fmt.Println("Default branche...")
        }

        //pattarn 4
        var obj interface{}
        obj = "Hello World"
        switch obj.(type) {
        case int:
                fmt.Println("This is a int type ...")
        case string:
                fmt.Println("This is a string type...")
        default:
                fmt.Println("Default branch...")
        }
}
[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-switch.go
Friday...
Sunday...
Grade B...
This is a string type...
[root@liumiaocn goprj]#

for语句

例子代码

[root@liumiaocn goprj]# cat basic-for.go
package main

func main() {
        //pattarn 1
        for level := 0; level < 10; level++ {
                for cnt := 0; cnt < 10-level; cnt++ {
                        print(" ")
                }
                for ascnt := 0; ascnt < level; ascnt++ {
                        print("*")
                }
                println("")
        }

        //pattarn 2
        level := 0
        for level < 10 {
                for cnt := 0; cnt < 10-level; cnt++ {
                        print(" ")
                }
                for ascnt := 0; ascnt < 2*level-1; ascnt++ {
                        print("*")
                }
                println("")
                level++
        }

        //pattarn 3
        /*
                for {
                        println("please don try this one unless you want to test your cpu usage")
                }
        */

}
[root@liumiaocn goprj]#

执行结果

[root@liumiaocn goprj]# go run basic-for.go

         *
        **
       ***
      ****
     *****
    ******
   *******
  ********
 *********

         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
[root@liumiaocn goprj]#
展开阅读全文

Go语言入门到构建自己的区块链

02-10
区块链,是一个分布式的共享账本和数据库,具有去中心化、不可篡改、可追溯、公开透明等特点。区块链技术作为科技创新的代表和未来技术的发展方向,已经上升至国家战略高度。它将为解决信息不对称问题、创造信任与合作机制等提供丰富的应用空间,也会是未来我们技术自主创新、引领产业变革的重要突破口。 比特币被认为是区块链技术1.0版的应用,主要实现的是电子现金的分布式记账转账功能。而随着技术的不断发展更新,越来越多的人希望突破“账本”的限制,从而可以把这项未来技术应用在更广阔的领域。 以太坊(Ethereum)为代表的第二代区块链公链项目,就是其中的佼佼者。与比特币不同,以太坊的定位是一个“世界计算机”。以区块链作为底层存储技术,我们不仅可以记账转账,而且可以构建“智能合约”(smart contract)定义程序化的处理流程,进而实现区块链上运行的“去中心化应用”(DApp)。 以太坊项目自提出后就受到了广泛关注,快速发展和壮大,而且由于其“分布式应用平台”而非“分布式账本”的定位,越来越多的开发人员开始以以太坊为基础设施,在上面开发DApp。 随着更多开发人员的参与,和项目的逐步落地,以太坊已成为从事区块链学习和开发不可或缺的一个环节;既了解区块链底层原理、又熟悉以太坊架构、还能基于以太坊开发DApp的专业人才,也成为了各大公司发力区块链技术储备的重点对象。 01.Go语言核心技术 性能卓越的Go语言已被全球知名公司谷歌、亚马逊、阿里、京东等广泛用于区块链、云计算开发。当前互联网行业正向虚拟现实和人工智能时代迈进,对于Golang人才的需求越加紧迫。 本套Go语言经典教程,不仅系统讲解了Go语言核心技术,还深入剖析了Go语言编程思想和底层实现。通过系统全面的学习,让你快速掌握Go语言关键技术,具备真正的Golang开发经验,并为下一步学习区块链技术打下坚实基础。 02.GoWeb 本套课程从GoWeb基础讲起,并配有实战案例,内容包含:Web简介、使用Go搭建服务器、使用Go对数据库进行增删改查、使用 Go处理请求和响应以及Go的模板引擎等。 实战案例的功能模块包括:登录注册、图书的增删改查、分页、购物车、订单管理等。 03.区块链以太坊核心技术 本套课程对以太坊基础理论知识和架构做了系统的梳理和深入的阐述,并对solidity和DApp的开发做了系统讲解,另外还对以太坊白皮书、黄皮书做了介绍;为有志于学习区块链技术、了解以太坊底层架构和DApp开发原理的工程师提供学习平台和帮助。 教程内容分为五大部分:以太坊基础、以太坊原理和架构、以太坊编程及应用、合约工作流以及原理深入分析。 通过学习本套课程,可以使学习者对以太坊有充分的认识,对整个区块链技术有更深刻的理解,对区块链应用开发有更加整体的领悟。 04.区块链项目:投票系统 课程基于以太坊开发投票系统DApp,在基础投票功能的基础上,增加了基于自定义token进行投票的功能,另外还涉及到了以太坊开发框架truffle的使用。 通过一个完整的DApp的开发,将以太坊理论和实践紧密结合起来,可以使学习者对以太坊上的DApp开发有更加全面充分的认识,进而对整个区块链技术有更深刻的理解。 05.区块链项目:拍卖系统 课程基于以太坊开发拍卖系统DApp,拍卖的原理类似于eBay,所以又可以叫做“去中心化eBay”项目。课程对项目的整体架构、后台合约逻辑、前台页面设计和实现一一做了详细讲解。 由于需要将商品信息保存在区块链上,所以我们会引入另一个区块链项目IPFS作为基础设施,另由于链下产品的存取,还会涉及到MongoDB。所有涉及到的组件及其交互,我们都会进行专项讲解。 通过完整的拍卖平台DApp的开发,可以使学习者对以太坊上的DApp开发有更加全面充分的认识,也可以了解到区块链系统与其它组件的交互,进而更加深刻地理解项目架构,为将来成长为架构师打下基础。
©️2020 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值