首页 > 其他分享 >go if语法

go if语法

时间:2022-08-20 05:00:06浏览次数:52  
标签:语句 10 fmt 语法 Println v2 go true

go if语句自身的特点

和 Go 函数一样,if 语句的分支代码块的左大括号与 if 关键字在同一行上,这也是 Go 代码风格的统一要求,gofmt 工具会帮助我们实现这一点; if 语句的布尔表达式整体不需要用括号包裹,一定程度上减少了开发人员敲击键盘的次数。而且,if 关键字后面的条件判断表达式的求值结果必须是布尔类型,即要么是 true,要么是 false  

操作符优先级

func main() {
    a, b := false,true
    if a && b != true {
        println("(a && b) != true")
        return
    }
    println("a && (b != true) == false")
}

//print: a && (b != true) == false

语句形式

单分支

    if t1 := true; t1 {
        fmt.Println("t1 is true")
    }

二分支、多分支

    var v2 int = 10
    if v2 > 10 {
        fmt.Println("v2>10!")
    } else if v2 > 5 {
        fmt.Println("10>=v2>5")
    } else {
        fmt.Println("v3<=5")
    }

if 自用变量

在 if 语句中声明自用变量是 Go 语言的一个惯用法,这种使用方式直观上可以让开发者有一种代码行数减少的感觉,提高可读性。

同时,由于这些变量是 if 语句自用变量,它的作用域仅限于 if 语句的各层隐式代码块中,if 语句外部无法访问和更改这些变量,这就让这些变量具有一定隔离性,这样你在阅读和理解 if 语句的代码时也可以更聚焦。  

快乐路径

Go 社区把这种 if 语句的使用方式称为 if 语句的“快乐路径(Happy Path)”原则,所谓“快乐路径”也就是成功逻辑的代码执行路径, 它的特点是这样的: 仅使用单分支控制结构; 当布尔表达式求值为 false 时,也就是出现错误时,在单分支中快速返回; 正常逻辑在代码布局上始终“靠左”,这样读者可以从上到下一眼看到该函数正常逻辑的全貌; 函数执行到最后一行代表一种成功状态。
    if v2 > 10 {
        fmt.Println("v2>10!")
        return
    }

    if v2 > 5 {
        fmt.Println("10>=v2>5")
        return
    }

 



标签:语句,10,fmt,语法,Println,v2,go,true
From: https://www.cnblogs.com/wanghaokun/p/16607062.html

相关文章

  • go学习框架
    基本语法,学+练安装编译及运行demo构建模式及演化gomodule的常规操作入口文件及包初始化语言类型变量常量数组和切片 ......
  • [Google] LeetCode 366 Find Leaves of Binary Tree
    Giventherootofabinarytree,collectatree'snodesasifyouweredoingthis:Collectalltheleafnodes.Removealltheleafnodes.Repeatuntilthetre......
  • [Google] LeetCode 2096 Step-By-Step Directions From a Binary Tree Node to Anothe
    Youaregiventherootofabinarytreewithnnodes.Eachnodeisuniquelyassignedavaluefrom1ton.YouarealsogivenanintegerstartValuerepresenting......
  • golang中GOPATH、GOROOT、GOBIN不生效等相关问题
    比较重要的三个配置:GOPATH、GOROOT、GOBINGOPATH:go项目开发的工程目录GOROOT:go安装所在的目录GOBIN:go项目编译完二进制程序目录不生效问题,其实应该好好检查是否......
  • 四.Suricata命令与规则语法
    一.离线流量分析#suricata-c/etc/suricata/suricata.yaml-rx.pcap-l/var/log/suricata-v1.离线分析可以对规则库进行测试2.规则更新后,历史的流量可以进行分析......
  • OI loves Algorithm(一)——Toposort 之 Kahn
    上次我更了一个叫做OIlovesMath的东西,那么这次我们来更算法!当然了,这种东西我遇到啥我就更啥……先科普科普何谓拓扑排序。拓扑排序指的是给你一个DAG(DirectedA......
  • gitignore的相关语法
    空行会被忽略匹配是区分大小写的,如:/abc和/Abc含义不同#开头是注释,会被忽略*表示0-n个字符**两个星含义是子目录子子目录等多层匹配?匹配1个字符(......
  • django中配置apscheduler,并解决运行两次的问题
    创建了一个独立的app,准备把定时器执行的内容放在这里pythonmanage.pystartappcron_jobs 在应用目录下创建目录autotask1.创建task.py文件,写入要执行的内容#-*-......
  • Mysql——常用语法
    这里只记录一些mysql语句,用于代替python进行大量的简单性工作。循环创建语句:delimiter$$#声明存储过程的结束符号为$$createprocedureauto_insert1()#相当于声明......
  • mysql运行sql文件报错[ERR] 2006 - MySQL server has gone away [ERR] -- MySQL dump
    原因:在运行数据库脚本文件时报该错,由于mysql对max_allowed_packect 允许最大的数据包的大小有限制解决方法:1.先查看现在允许的最大包大小,单位(字节) select@@max_allow......