Go常见语句

集中常见的条件判断语句

语句描述
if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。
if...else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
if 嵌套语句你可以在 ifelse if 语句中嵌入一个或多个 ifelse if 语句。
switch 语句switch 语句用于基于不同条件执行不同动作。
select 语句select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
}

**与C语言等不同的是在if后面的布尔表达式没有括号
eg:
package main

import "fmt"

func main() {
    var a int = 10
    var b float32 = 10.1

    if a < 20 {
        fmt.Println("a 小于 20 \n")
    }
    fmt.Println("a,b的值为: %d,%f\n", a, b)
}



switch语句语法:
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}


select是Go中的一个控制结构,类似于用于通信的switch语句。每个case必须是一个通信操作,要么是发送要么是接收。

select语句语法:
select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s); 
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}
    • 每个case都必须是一个通信
    • 所有channel表达式都会被求值
    • 所有被发送的表达式都会被求值
    • 如果任意某个通信可以进行,它就执行;其他被忽略。
    • 如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。
      否则:
      1. 如果有default子句,则执行该语句。
      2. 如果没有default字句,select将阻塞,直到某个通信可以运行;Go不会重新对channel或值进行求值。
eg:

package main

import "fmt"

func main() {
    var c1, c2, c3 chan int
    var i1, i2 int
    select {
    case i1 = <-c1:
        fmt.Printf("received", i1, "from c1\n")
    case c2 <- i2:
        fmt.Printf("sent ", i2, "to c2\n")
    case i3, ok := (<-c3):
        if ok {
            fmt.Printf("received ", i3, "from c3\n")
        } else {
            fmt.Printf("c3 is closed\n")

        }
    default:
        fmt.Printf("no communication\n")

    }
}
结果为:
    no communication


循环语句:
循环类型描述
for 循环重复执行语句块
循环嵌套

在 for 循环中嵌套一个或多个 for 循环

控制语句描述
break 语句经常用于中断当前 for 循环或跳出 switch 语句
continue 语句跳过当前循环的剩余语句,然后继续进行下一轮循环。
goto 语句将控制转移到被标记的语句。

goto 语法格式如下:

goto label;
..
.
label: statement;



eg :
package main

import "fmt"

func main() {
   /* 定义局部变量 */
   var a int = 10

   /* 循环 */
   LOOP: for a < 20 {
      if a == 15 {
         /* 跳过迭代 */
         a = a + 1
         goto LOOP
      }
      fmt.Printf("a的值为 : %d\n", a)
      a++     
   }  
}



转载于:https://www.cnblogs.com/01black-white/p/9732504.html

### 常见 SQL 语法错误及其解决方案 #### 错误一:用户登录失败 当遇到用户 'sa' 登录失败,提示该用户与可信 SQL Server 连接无关联的情况时,这通常是因为连接字符串配置不正确或者安全设置不允许当前类型的认证方式。确保使用正确的身份验证模式,并确认服务器端已启用所需的登录类型[^1]。 ```sql -- 使用SQL Server Management Studio 或其他工具修改数据库属性来允许混合模式认证 ALTER LOGIN sa WITH PASSWORD = 'yourStrong(!)Password'; GO ``` #### 错误二:拼写错误或关键字大小写不当 SQL 对某些版本来说区分大小写的敏感度不同,在编写查询语句时应特别注意表名、列名以及函数名称的书写形式是否符合定义标准。如果不确定,则可以采用方括号 `[]` 将对象名字包围起来以防止解析器误解[^2]。 ```sql SELECT * FROM [User]; -- 正确处理可能的大写/小写字母差异 ``` #### 错误三:缺少分号结尾 虽然不是所有的 RDBMS 都强制要求每条命令结束处加上`;`,但在一些情况下遗漏它可能会引发后续执行逻辑混乱甚至报错。养成良好习惯总是有益于代码可读性和维护性[^3]。 ```sql UPDATE Employees SET Salary = Salary + 100 WHERE DepartmentID = 5; DELETE FROM Orders WHERE OrderDate < DATEADD(year, -2, GETDATE()); ``` #### 错误四:未闭合引号或其他字符 单双引号成对出现用于表示字符串常量;圆括号用来限定子表达式的范围等。任何不成对使用的特殊符号都可能导致编译期异常终止[^4]。 ```sql INSERT INTO Products (ProductName, Price) VALUES ('New Product', 9.99); ``` #### 错误五:数据类型不匹配 尝试向整数字段插入浮点数值或将日期存储到文本域中都会触发类型冲突警告。仔细核对各列的数据描述并按照预期格式提供输入值是预防此类问题的关键措施之一[^5]。 ```sql DECLARE @dateValue AS DATETIME; SET @dateValue = CAST('2023-10-01' AS DATETIME); -- 明确指定转换目标类型 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值