Go_ if else语句 ,,循环,,switch,,数组

if-else语句

// if 语法
if 定义变量;条件 {
    
}else if 条件{
    
}else{
    
}

// 输入分数,打印 成绩等级
package main

import "fmt"

// if
func main() {
	//1 接收用户输入
	var score int = 0
	fmt.Print("请输入分数:")
	fmt.Scan(&score)  

	showLevel(score)

}

func showLevel(score int) {
	if score >= 90 && score <= 100 {
		fmt.Println("优秀")
	} else if score > 80 && score < 90 {
		fmt.Println("良好")
	} else if score >= 60 && score <= 80 {
		fmt.Println("及格")
	} else {
		fmt.Println("不及格")
	}

}


if res, ok := add(4, 5); ok {
    fmt.Println("计算结果是:", res)
}

循环

# go 只有 for循环
    -没有while
    -没有do while
    -但是通过for循环能实现 while循环
    
# 基本语法--》基于索引的循环
for 定义变量;条件;自增或自减{
    
}


# 基于迭代的循环
package main

import "fmt"

// for

func main() {
	// 1 基本使用--》打印0---9
	//for i := 0; i < 10; i++ {
	//	fmt.Println(i)
	//}

	// 2 省略第一部分,变量的定义--->i作用域范围更大
	//i := 0
	//for ; i < 10; i++ {
	//	fmt.Println(i)
	//}

	// 3 省略第三部分,自增
	//for i := 0; i < 10; {
	//	fmt.Println(i)
	//	i++
	//}

	// 4 省略第一和第三部分  ---》只放条件---》俩分号可以省略---》等同于while循环
	//i := 0
	//for i < 10 {
	//	fmt.Println(i)
	//	i++
	//}

	// 5 三部分全省略--》就是死循环
	//for {
	//	fmt.Println("死循环")
	//}

	// 6 break 和continue 跟所有语言都一样

	// 7 基于迭代的循环====》容器类型:数组,切片,map
	//var a [3]int = [3]int{99, 88, 77}
	//for _, value := range a {  // range python 内置函数---》go中是关键字
	//	//fmt.Println(index)
	//	fmt.Println(value)
	//}

	// 循环字符
	s := "lqz is handsome中"
	//for _, value := range s { // go 直接循环字符串,循环的是一个个字符
	//	//fmt.Println(index)
	//	fmt.Printf("valaue的类型是:%T\n", value)
	//	fmt.Println(string(value)) // 	int32--》rune
	//}

	// 循环字节--->len(字符串)---字节长度
	for i := 0; i < len(s); i++ {
		fmt.Println(s[i])
		fmt.Println(string(s[i]))
	}

	// python 循环字符串循环的是字符
	// python 中循环字节---》把字符串先encode成 bytes格式--》循环bytes格式---》默认以16进制显示--》10进制,二进制

	/*
		s='lqz is handsome中'
		s_b=s.encode('utf-8)
		for item in s_b:
			print(item)
			print(bin(item))
			print(hex(item))

		[ item for item in s.encode('utf-8)]
	*/

}

switch语句

# switch 是关键字---》为了优雅的替换掉过多的if-else
    -python中没有switch关键字---》但是能实现switch的功能或语法
    -java,go,c,js,都有switch关键字的支持
    
# 用户输入分数,打印成绩等级

package main

import "fmt"

func main() {
    var score int = 0
    fmt.Print("请输入分数:")
    fmt.Scan(&score)
    // 1 用法1 ,基本使用 case中放一个相等值
    //switch score {
    //case 88:
    //    fmt.Println("是88")
    //case 99:
    //    fmt.Println("是99")
    //default:
    //    fmt.Println("不知道")
    //}

    // 1.1 基本使用,case中放多个相等值
    //switch score {
    //case 88, 99, 77:
    //    fmt.Println("是88")
    //case 55, 66, 44:
    //    fmt.Println("是99")
    //default:
    //    fmt.Println("不知道")
    //}

    // 2 用法2, case中放条件

    showLevelSwitch(score)

    // 3 default 使用---》所有不符合执行它

    // 4 fallthrough -->无条件执行下一个case

}

// 2 用法2, case中放条件
func showLevelSwitch(score int) {
    switch {
    case score >= 90 && score <= 100:
        fmt.Println("优秀")

    case score > 80 && score < 90:

        fmt.Println("良好")
        fallthrough

    case score >= 60 && score <= 80:
        fmt.Println("及格")
        fallthrough
    default:
        fmt.Println("不及格")

    }

}

数组

# 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。
Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(当然,如果是 interface{} 类型数组,可以包含任意类型)


package main

import "fmt"

// 数组的定义和使用
func main() {
    //1 定义
    //var a [3]int // 数组中的所有元素都被自动赋值为数组类型的零值
    ////var a1 [4]string = [4]string{"lqz", "zhangsan"} // 内容可以小于,但不能大于
    ////var a1  = [4]string{"lqz", "zhangsan"} // 内容可以小于,但不能大于
    //a1 := [4]string{"lqz", "zhangsan"} // 内容可以小于,但不能大于
    //fmt.Println(a)
    //fmt.Println(a1)

    //2 根据下标,使用---》改值,赋值
    //a1[0] = "xxx"
    //a1[3] = "asfasd"
    //fmt.Println(a1)

    // 3 数组的大小是类型的一部分
    //var a3 [3]int = [3]int{1, 2, 3}
    //var a4 [3]int = [3]int{1, 2, 4}
    //var a5 [4]int = [4]int{1, 2, 4}
    //fmt.Println(a3 == a4)
    //fmt.Println(a4 == a5)
    //addA(a3)
    //addA(a5)

    // 4 数组是值类型--->当参数传递到函数中,在函数中修改---》会不会影响原来的
    //var a3 [3]int = [3]int{1, 2, 3}
    //changeA(a3)
    //fmt.Println("外部:", a3)

    // 5 数组的长度 内置函数len
    //fmt.Println(len(a3))

    var a4 = [...]int{1, 2, 33, 4, 5, 6} // 数组长度由值个数决定
    fmt.Println(len(a4))

    // 6 使用 range 迭代数组  fori  forr
    for i := 0; i < len(a4); i++ {
        fmt.Println(a4[i])
    }
    for _, value := range a4 {
        fmt.Println(value)
    }

    // 7 多维数组
    var a5 [5][2]int
    fmt.Println(a5) // [[0 0],[0 0],[],[],[]]
    a5[1][1] = 99
    fmt.Println(a5)
    var a6 [5][2]int = [5][2]int{{11, 33}, {66, 77}}
    fmt.Println(a6)

    // 8 定义并赋值
    var a7 [100]int = [100]int{98: 999}
    fmt.Println(a7)
}

func addA(a [3]int) (total int) {
    for _, value := range a {
        total += value
    }
    return
}

func changeA(a [3]int) {
    a[0] = 99
    fmt.Println("内部", a)
}

 

  

  

 

posted @ 2024-04-03 15:50  拆尼斯、帕丁顿  阅读(24)  评论(0)    收藏  举报