l

lizhao

V1

2022/09/12阅读:32主题:橙心

Golang常量与条件语句

Go常量

基本用法

相对于变量,常量是恒定不变的值,只能赋值一次,用const关键字,常量在定义的时候必须赋值

 const name = "小明"
  name = "小红" // 编译器会报错,无法分配
 
  const age = 18

多个常量一起声明

const (
  name = "小明"
  age  = 18
  sex  = "男"
 )

如果是批量声明的常量,除了第一个其它的常量右边的初始化表达式可以省略,省略的初始化表达式表示使用前面的常量初始化表达式

 // 这种写法,三个值都会被赋值为小明 
const (
  name = "小明"
  age
  sex
 )  
  

// 这种打印结果是  name、age = 小明  sex、school、city = 男 
const (
  name = "小明"
  age
  sex = "男"
  school
  city
 )

iota常量生成器

  1. iota是go语言的常量计数器,只能在常量的表达式中使用
  2. 如果const声明的第一个变量值赋为iota,则重置为0,下面的每一个常量值为自动加一,定义枚举时很有用
  3. iota可以理解为索引index
  4. 有iota赋值的地方,下面连续没有赋值的行都返回索引
 // 打印结果为  0 1 2 3 4
const (
  name = iota
  age
  sex
  school
  city
 )
 
  // 打印结果为  0 18 2 3 4
  const (
  name = iota
  age  = 18
  sex  = iota
  school
  city
 )
  
  // 打印结果为  name age sex 分别为 0 1 2  school city 返回值为 18 18
  const (
  name   = iota
  age    = iota
  sex    = iota
  school = 18
  city
 )
  
  

使用 _ 跳过指定值

// 打印结果  name age sex 值分别为 0 1 2   city 值为 4
const (
  name = iota
  age  = iota
  sex  = iota
  _    
  city
 )
  
  // 打印结果  name age sex 值分别为 0 1 2   city 值为 18
  const (
  name = iota
  age  = iota
  sex  = iota
  _    = 18
  city
 )

多个iota定义在一行

 const (
  name, a = iota, iota + 1
  age, b
  sex, c
  _, d
  city, e
 )
  
  打印结果:
  name age sex city 值 为 0 1 2 4
  a b c d e 值 1 2 3 4 5
  

条件语句if

  • 条件语句指定一个或多个条件,通过条件为true在决定是否执行语句,在false执行另外语句
  • 可以省略表达式括号
  • 代码块括号必须在表达式尾部
  • 初始化语句,可以定义代码块局部变量
if 布尔表达式 { // 括号必须在表达式尾部,不能单独换行
    /* 在布尔表达式为 true 时执行 */
  }
  
  
  // 错误写法
  if true
  { //单独一行
    
  }

条件语句if使用

func main() {
   /* 定义局部变量 */
   var a int = 10
   /* 使用 if 语句判断布尔表达式 */
   if a < 20 {
       /* 如果条件为 true 则执行以下语句 */
       fmt.Printf("a 小于 20\n" )
   }
   fmt.Printf("a 的值为 : %d\n", a)
}

以上代码结果

 a 小于 20
 a 的值为 : 10

if...else使用

if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
else {
  /* 在布尔表达式为 false 时执行 */
}

if条件语句声明局部变量

  a := 30
 if x := 3; a > 20 {
  println(x)
 }
 // 打印结果 x = 3

条件语句switch

  • 可以省略 break,默认自动终止
  • 同时测试多个符合条件的值,使用逗号分割,case val1, val2, val3

语法

  • var1 可以是任何类型,val1 必须是同类型的任意值
switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

声明一个条件判断

// 声明int类型a
 var a int = 30
 switch a {
 case 10:
  println("10")
 case 20:
  println(20)
 case 30:
  println(30)

 }

多个符合条件判断

 var a int = 50
 switch a {
 case 10:
  println("10")
 case 20:
  println(20)
 case 30, 40, 50:
  println(30)
 }

循环语句for

 for i := 0; i < 10; i++ {
  println(i)
 }


for死循环

 for {
  println("abc")
}

循环语句range

Golang range类似迭代器操作,返回 (索引, 值) 或 (键, 值)。

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}
numbers := [6]int{1, 2, 3, 5}
 for i, x := range numbers {
  fmt.Printf("第 %d 位 x 的值 = %d\n", i, x)
 }
  

打印结果

第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0

分类:

后端

标签:

Golang

作者介绍

l
lizhao
V1