3-go-函数、包、if-else语句、for循环、switch语句

1 函数
2 包
3 if-else语句
4 for循环
5 switch语句

1 函数

package main

import "fmt"

func main() {
   
	// 函数高级
	//var f=test02("xxx")
	//f()

	//test03(func() {
   
	//	fmt.Println("xxxx")
	//})

	//fmt.Println(1, 2, 3, 4)
	//var i MyInt =10
	//var i1 int=9
	//fmt.Println(i+i1)  // 类型不匹配

	test04(1, 2, 3, 4, 54, 5, 6, 7, 8, 8)

}

// 1 匿名函数---》 定义在函数内部---》没有名字
// go (python)语言中,函数是一等公民---》只要函数能赋值给一个变量
// 头等函数
func test01() {
   
	// 定义匿名函数:要么是用来调用,要么用来返回,当参数传递
	func() {
   
		fmt.Println("我是匿名函数")
	}()
}

// 2 闭包函数:定义在函数内部   对外部作用域有引用
func test02(name string) func() {
   
	//var name ="lqz"
	f := func() {
   
		fmt.Println(name)
		fmt.Println("我是匿名函数")
	}
	return f
}

// 3 函数当参数传递
func test03(f MyFunc) {
   
	f()
}

// 4 重命名类型
//type MyFunc func()  //  只是重命名
type MyFunc = func()

type MyInt = int // 只是重命名,它们还是同一个类型,允许运算
//type MyInt   int   // 重新定义了一个类型 MyInt  跟int 不是同一个类型,不能运算

// 5 不定长参数  可以传任意长度int类型
func test04(a ...int) {
   
	fmt.Println(a)  // 切片---》列表
}

2 包

# go 1.11 以后,go统一使用 go moduls管理包

# 包的作用
	相同功能的代码放到一起,便于管理
    以后使用,导入包,拿着  包.方法  调用
    
# 包在go中,如何使用
	-需要在go文件开头声明 属于哪个包
    -同一个文件夹下,包名必须一致
    -文件夹名跟包名没有必然联系,但是约定俗称,文件夹名就是包名
    -在同一个包下,所有资源共享
    	-变量,常量,方法,直接用名字调用即可
        -同一个包下,不同go文件中的变量,常量,方法。。不能重名
        -同一个包,你就当成是同一个go文件即可
    -在使用的位置,  导入路径, 按包名使用
    
    -首字母大写 变量 常量 函数 .. 表示导出---》其他包中可以使用
    
    -一个文件夹下 可不可以有多个包?
    	一个文件夹下包名必须一致
        -不同文件夹下,同名包,其实是两个包
        -文件夹下同级目录下,包名必须一致,属于同一个包,不同级目录下,是不同的包,即便包名一致
        -不同级下包名一致,在一个go文件中导入,会冲突
        	import lqz "go_day03/lqz/package01" // 给包重命名

3 if-else语句

package main

import "fmt"

// if 判断
func main() {
   
	var score int
	fmt.Print("请输入分数:")
	fmt.Scan(&score)
	if score >= 90 {
   
		fmt.Println("优秀")
	} else if score > 60 && score < 90 {
   
		fmt.Println("及格")
	} else {
   
		fmt.Println("不及格")
	}

}

4 for循环

// 只有for循环---》没有while循环关键字,但有while循环的功能

package main

import "fmt"

func main() {
   
	// 循环打印出0--9
	// 1 基于索引的循环--完整方式  ---》分号分割的三部分,每部分都可以省略
	//for i := 0; i < 10; i++ {
   
	//	fmt.Println(i)
	//}

	// 2 省略第一个部分  定义放在外面 i的作用域范围 大了
	//var i int = 0
	//for ; i < 10; i++ {
   
	//	fmt.Println(i)
	//}

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

	// 4 省略第一和第三部分
	//i := 0
	//for i < 10 {
   
	//	fmt.Println(i)
	//	i++
	//}

	// 5 以上,简写成---》就是while循环---》for 条件 {循环体}
	//i := 0
	//for i < 10 {
   
	//	fmt.Println(i)
	//	i++
	//}

	//6 三部分都省略---死循环
	//for {
   
	//	fmt.Println("死循环")
	//}

	// 7 range 循环 基于迭代的循环  python 中range 是内置函数,go中是关键字 for  func package 一类
	//a := [3]int{1, 2, 3}
	//for _, item := range a {
   
	//	fmt.Println(item)
	//}

	// 8 break 和continue跟所有语言都一样
	for i := 0; i < 10; i++ {
   
		if i == 5 {
   
			continue
		}
		fmt.Println(i)

	}
}

5 switch语句

# python   3.10 后支持--》优雅的替换掉 if-else
key = 'lqz'
match key:
    case 'lqz':
        print('是lqz')
    case 'justin':
        print('justin')
    case _:
        print('默认情况')
        
        
# go 支持 switch
	package main

import "fmt"

// switch--->优雅的替换掉if else
func main() {
   

	// 1 基本用法
	//var i int
	//fmt.Scan(&i)
	//switch i {
   
	//case 9:
	//	fmt.Println("您输入了9")
	//case 8:
	//	fmt.Println("您输入了8")
	//default:
	//	fmt.Println("不知道输入了啥")
	//
	//}

	//2 多表达式
	//var i int
	//fmt.Scan(&i)
	//switch i {
   
	//case 1, 3, 5, 7, 9:
	//	fmt.Println("您输入了奇数")
	//case 2, 4, 6, 8:
	//	fmt.Println("您输入了偶数")
	//default:
	//	fmt.Println("不知道输入了啥")
	//}

	// 3 无表达式
	//var i int
	//fmt.Scan(&i)
	//switch {
   
	//case i == 1 || i == 3:
	//	fmt.Println("您输入了奇数")
	//case i == 2 || i == 4:
	//	fmt.Println("您输入了偶数")
	//default:
	//	fmt.Println("不知道输入了啥")
	//}

	// 4 fallthrough
	var i int
	fmt.Scan(&i)
	switch i {
   
	case 1:
		fmt.Println("您输入了1")
		fallthrough // 只要执行到它,无条件执行下一个case
	case 2:
		fmt.Println("您输入了2")
		fallthrough
	case 3:
		fmt.Println("您输入了3")
		fallthrough
	default:
		fmt.Println("不知道输入了啥")
	}

}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-23 01:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 01:40:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 01:40:02       82 阅读
  4. Python语言-面向对象

    2023-12-23 01:40:02       91 阅读

热门阅读

  1. 设计模式中的设计原则

    2023-12-23 01:40:02       65 阅读
  2. RedisTemplate存取数据

    2023-12-23 01:40:02       59 阅读
  3. 常见的排序算法---快速排序算法

    2023-12-23 01:40:02       81 阅读
  4. Oracle-表备份、表数据备份、create select语句备份

    2023-12-23 01:40:02       61 阅读
  5. 设计测试用例

    2023-12-23 01:40:02       50 阅读
  6. 数据结构【2】:列表专题

    2023-12-23 01:40:02       58 阅读
  7. 【Linux】Linux中链表数据结构详细说明及用法代码

    2023-12-23 01:40:02       53 阅读
  8. LeetCode2828. Check if a String Is an Acronym of Words

    2023-12-23 01:40:02       59 阅读
  9. 面试算法65:最短的单词编码

    2023-12-23 01:40:02       60 阅读