Golang基础第一章【数据类型/变量/流程语句】

1.数据类型

package main

import "fmt"

func main() {

	// 数据类型集合
	// bool类型 布尔类型 只能是常量const
	var v1 bool = false
	var v2 = true

	// int类型 整型和浮点型 数字的形式
	var v3 int = 123
	var v4 = 888

	// string类型 字符串型 字符串的形式 “123”, 'test'
	var v5 string = "123" // 单引号‘’  双引号“”  都是可以的
	var v6 = "this is string type"

	// float型 浮点型 float32/float64 1.122, 2.333
	var v7 float32 = 1.2222
	var v8 float64 = 1.222222222

	// 其他类型 其他类型用到百度即可
	fmt.Printf("v1 : %t | type=%T\nv2 : %t | type=%T\nv3 : %d | type=%T\nv4 : %d | type=%T\nv5 : %s | type=%T\nv6 : %s | type=%T\nv7 : %f | type=%T\nv8 : %f | type=%T\n", v1, v1, v2, v2, v3, v3, v4, v4, v5, v5, v6, v6, v7, v7, v8, v8)
}

输出结果

2.变量定义

package main

import "fmt"

// 全局变量
var v1 string = "golang very good~"
var v2 int = 123
var v3 = "golang"

// v4 := 123  全局中不可使用的方式
var v4 = 123

// 可以简写为:
var (
	v1 string = "golang very good~"
	v2 int    = 123
	v3        = "golang"
	v4        = 123
)

// 或者
var v1, v2, v3, v4 = "golang very good~", 123, "golang", 123

func main() {
	// 局部变量  变量所在的未知对于不同的作用域,比如局部变量不能在全局中被调用
	var name int = 1   // 声明变量指定数据类型并赋值
	var user = "alinx" // 声明变量自动识别数据类型
	passwd := "123456" // 直接声明自动识别数据类型
	// 输出变量,变量类型
	fmt.Printf("变量类型: %d = %T  %s = %T %s = %T) \n", name, name, user, user, passwd, passwd)
	fmt.Printf(" v1 = %s\n v2 = %d\n v3 = %s\n v4 = %d\n", v1, v2, v3, v4)
}

编译后输出结果

 

 

3.流程语句

package main

import "fmt"

func main() {
	// if 条件控制语句
	var v1 = true
	if v1 {
		// 当if v2的结果为true 执行结果为真
		fmt.Println("结果为真")
	} else {
		// 当if v2的结果为false 执行结果为假
		fmt.Println("结果为假")
	}

	var v2 = false
	if v2 {
		// 当if v2的结果为false 执行结果为假
		fmt.Println("结果为假")
	} else {
		// 当if v2的结果为true 执行结果为真
		fmt.Println("结果为真")
	}

	// else if 语句 多分支判断流程语句
	v3 := 80
	// 如果匹配执行如下语句
	if v3 >= 90 {
		fmt.Println("很优秀哦")
		// 如果匹配执行如下语句  匹配项
	} else if v3 >= 80 {
		fmt.Println("要加油哦")
		// 如果匹配执行如下语句
	} else if v3 >= 70 {
		fmt.Println("你怎么有点笨呢")
		// 如果以上都没有条件匹配那么执行如下语句
	} else {
		fmt.Println("不努力怎么赚钱?")
	}
	// 对于else if 语句 而言, else if 可以有多个,else只能有一个

	// switch-case 选择语句
	// 根据输入的条件选择对于的执行代码体
	operate := "add"
	// 针对 operate 对象匹配方式
	switch operate {
	// 如果输入值为: add 执行如下语句
	case "add":
		fmt.Println("添加数据")
		// 如果输入值为: del 执行如下语句
	case "del":
		fmt.Println("删除数据")
		// 如果输入值为: update 执行如下语句
	case "update":
		fmt.Println("更新数据")
		// 如果输入值为: query 执行如下语句
	case "query":
		fmt.Println("查询数据")
		// 如果以上都不匹配执行如下默认项
	default:
		fmt.Println("默认操作,以上选项都不匹配")
	}

	// switch-case 表达式的方式
	// score := 80
	// switch {  可简写为
	switch score := 80; {
	// 根据条件选择对于的值进行执行
	case score >= 90:
		fmt.Println("优秀")
		// 根据条件选择对于的值进行执行
	case score >= 80:
		fmt.Println("不错")
		fallthrough // 默认执行完语句后就退出流程了,如果加此声明,可以继续执行下一条件
		// 根据条件选择对于的值进行执行
	case score >= 70:
		fmt.Println("要加油了 继续执行的语句 fallthrough 效果")
		// 默认语句
	default:
		fmt.Println("不努力以后怎么开豪车,牵美女?")
	}

	// for 循环语句
	/* for 循环语句分为三部分组成
	初始化语句 条件语句 后置语句
	i := 1	  i <= 3  i++
	*/
	for i := 1; i <= 3; i++ {
		fmt.Println(i) // 直到条件为 false 才会停止执行
	}

	// 打印99乘法表
	// 定义初始化值,并自增
	for h := 1; h <= 9; h++ {
		// 输出换行符
		fmt.Println("")
		// 与上一个循环对比,并输出相乘的结果; 自增,并小于外层循环体的值
		for s := 1; s <= h; s++ {
			// 格式化输出 数字的形式
			fmt.Printf("%d * %d = %d\t", h, s, (h * s))
		}
	}
	fmt.Println("") // mac问题加换行 非mac无视

	// for break 语句
	for i := 1; i < 5; i++ {
		if i == 2 { // 条件如果匹配则跳出循环
			break //break 如果条件匹配则 跳出并结束循环语句
		}
		fmt.Println("break 如果条件匹配则 跳出并结束循环语句")
	}

	// for continue
	for a := 1; a > -3; a-- {
		if a == -1 {
			fmt.Println("条件匹配")
			continue             // 跳出当前循环 继续执行剩余循环语句
			fmt.Println("执行我吗?") // 此语句由于continue语句无法执行
		}
		fmt.Println(a)
	}

	// 类 while 循环
	var sum = 0
	i := 1
	for i <= 100 {
		sum += i
		i++
	}
	fmt.Printf("高斯求和: %d\n", sum)

	// 死循环
	i = 0
	for {
		i++
		if i == 5 { // 省略此break 即为死循环
			break
		}
		fmt.Println(i)
	}
	// 使用control + c 停止
	// 可以结合break使用

	// for-range 遍历
	// 用于遍历可迭代对象的每一个元素,例如字符串,数组,切片,映射,通道等
	text := "I love golang"
	for i, e := range text {
		fmt.Printf("%d %s\n", i, e)
	}
	/*
			针对包含Unicod e 字符的字符串遍历是 需要使用 for range range 返回两个元素分别为字
		节索引 和 rune 字符, 可通过空白标识符忽略 需要 接收的 变量
	*/

	//	label 与 goto
	//  可以通过goto 语句任意跳转到当前函数指定的label位置
	sums := 0
	ii := 1
START: // 定义START标签
	if ii > 100 {
		goto END // 跳转END标签
	} else {
		sums += i
		i++
		goto START // 跳转到START标签
	}
END: // 定义END标签
	fmt.Println(sums)
	// break continue 也是可以在语句中结合使用的
}

流程语句执行结果

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页