快速入门GO语言之Lesson00-基础语法

本文是GO语言的基础语法入门教程,涵盖了基本常识,如只有一个入口函数main,以包为管理单位,不需要分号结尾等。还介绍了cmd命令,如go build和go run。此外,讲解了数据类型和变量声明,强调了变量命名规范和默认值。最后,提供了多个练习代码块帮助读者巩固学习。

**

快速入门GO语言之Lesson00-基础语法

**
一、基本常识
1、go语言只有一个入口函数main,一个文件夹代表一个工程,每个工程只能有一个main
2、打印,Println()会自动换行
3、调用函数,大部分都需要导入包
4、go语言以包作为管理单位,每个文件必须先声明包
5、程序必须要一个main包
6、go语言每一行的结尾没有“;”结尾

二、cmd命令
1、go build xxx.go //编译go代码,生成一个可执行程序,运行可执行程序xxx.exe
2、cls 清屏命令
3、go run xxx.go //不生成可执行文件,直接编译运行

三、数据类型
1、数据类型的作用:告诉编译器变量应该以多大的内存存储
2、变量命名规范:
a、字母,数字,下划线
b、不能以数字开头
c、名字不能是关键字
d、大小写区分

四、变量声明
1、声明格式:var 变量名 数据类型 //声明的变量必须使用
2、没有初始化的变量,默认值为0
3、同一个函数内的变量声明唯一,可以同时声明多个同一类型的变量
4、自动推导类型,必须初始化通过初始化的值确定类型

五、练习代码块(1)

package main

import "fmt"

func main() { //左括号必须和函数放在同一行
	fmt.Println("Hello World!")

	var a int
	a = 10
	fmt.Println("a= ", a)

	var b int = 20
	fmt.Println("b= ", b)

	//自动推导类型
	c := 30
	fmt.Printf("c type is %T\n", c) //%T打印变量的数据类型

	e, f := 10, 20
	//传统的方式交换两个变量的值
	var temp int
	temp = e
	e = f
	f = temp

	//go语言交换两个变量的值
	i, j := 10, 20
	i, j = j, i
	fmt.Printf("i = %d,j = %d\n", i, j)

	//匿名变量,丢弃数据不处理
	//匿名变量配合函数返回值使用才有意义
	temp, _ = e, f
	fmt.Printf("temp= %d", temp)

}
// 运行结果
// Hello World!
// a=  10
// b=  20
// c type is int
// i = 20,j = 10

六、练习代码块(2)

package main

import "fmt"

func main() {
	//常量的使用
	//常量:程序运行区间,不可以改变的量 关键字const
	//变量:程序运行区间,可以改变的量
	const a int = 10
	//a = 20       报错:常量不可修改
	const b = 10 //没有":="
	fmt.Printf("b type is %T\n", b)

	//多个变量或常量的定义
	//不同类型变量的声明(定义)
	var c int
	var d float64
	c, d = 10, 3.1415926
	fmt.Printf("c = %d,d = %f \n", c, d)

	//ctrl+/ 注释和取消注释快捷键

	//const i int = 10
	//const j float64 = 3.1415926

	const (
		i = 10
		j = 3.1415926
	)
	fmt.Printf("i = %d,j = %v\n", i, j)

}
// 运行结果
// b type is int
// c = 10,d = 3.141593 
// i = 10,j = 3.1415926

七、练习代码块(3)

package main

import "fmt"

func main() {
	//iota常量自动生成器,每个一行,自动累加一
	//iota给常量赋值使用

	const (
		a = iota //0
		b = iota //1
		c = iota //2
	)
	fmt.Printf("a= %d,b= %d,c= %d\n", a, b, c)

	//iota遇到const重置为0
	const d = iota
	fmt.Printf("d = %d\n", d)

	//可以只写一个iota
	const (
		a1 = iota //0
		b1        //1
		c1        //2
	)
	fmt.Printf("a1= %d,b1= %d,c1= %d\n", a1, b1, c1)

	//如果是同一行,值都一样
	const (
		i          = iota
		j1, j2, j3 = iota, iota, iota
		k          = iota
	)
	fmt.Printf("i = %d,j1 = %d,j2 = %d,j3 = %d,k = %d\n", i, j1, j2, j3, k)

}

//运行结果
//a= 0,b= 1,c= 2
//d = 0
//a1= 0,b1= 1,c1= 2
//i = 0,j1 = 1,j2 = 1,j3 = 1,k = 2

八、练习代码块(4)

package main

import "fmt"

func main() {
	//bool类型
	//1、声明变量
	var a bool
	a = true
	fmt.Println("a = ", a)
	//2、自动推导
	b := false
	fmt.Println("b = ", b)

	//浮点型
	//1、声明变量
	var f1 float32
	f1 = 3.1415926
	fmt.Println("f1 = ", f1)

	var f2 float64
	f2 = 3.1415926
	fmt.Println("f2 = ", f2)

	//字符类型
	var ch byte
	ch = 97
	fmt.Printf("%c = %d\n", ch, ch) //格式化输出,%c以字符串方式打印,%d以整型方式打印

	//大小写转化,加减32
	fmt.Printf("大写:%d,小写:%d\n", 'A', 'a')
	fmt.Printf("大写转小写:%c\n", 'A'+32)
	fmt.Printf("小写转大写:%c\n", 'a'-32)

	//字符串类型
	var str string
	str = "abc"
	fmt.Println("str = ", str)
	//自动推导类型
	str2 := "mike"
	fmt.Println("str2 = ", str2)
	//内建函数,len()返回字符串长度
	fmt.Println("str2 的长度: ", len(str2))

	//字符与字符串的区别,字符串都是隐藏了一个结束符
	//只有一个字符,转义字符除外
	//一个或多个字符组成

	var str3 string
	str3 = "hello,world"
	fmt.Printf("str3 = %c%c%c%c%c\n", str3[0], str3[1], str3[2], str3[3], str3[4])

	//复数类型
	var t complex128
	t = 2.1 + 3.14i
	fmt.Println("t = ", t)
	//自动推导类型
	t2 := 3.3 + 2.2i
	fmt.Println("t2 = ", t2)

	//通过内建函数,取实部和虚部
	fmt.Println("real(t2) = ", real(t2), "imag(t2) = ", imag(t2))
}

//运行结果
// a =  true
// b =  false
// f1 =  3.1415925
// f2 =  3.1415926
// a = 97
// 大写:65,小写:97
// 大写转小写:a
// 小写转大写:A
// str =  abc
// str2 =  mike
// str2 的长度:  4
// str3 = hello
// t =  (2.1+3.14i)
// t2 =  (3.3+2.2i)
// real(t2) =  3.3 imag(t2) =  2.2

九、练习代码块(5)

package main

import "fmt"

func main() {
	//类型转换
	var flag bool
	flag = true
	//bool类型不能转换为int,int 不能转换为bool,这种不能转换类型成为不兼容类型
	fmt.Printf("flag = %T\n", flag)

	var ch byte
	ch = 'a'
	var t int
	t = int(ch)
	fmt.Printf("t = %d\n", t)

	//类型别名 type
	type bigint int64 //给int64起别名为bigint
	var a bigint
	fmt.Printf("a type is %T\n", a)

	type (
		long int64
		char byte
	)
	var b long
	b = 11
	var ch1 char
	ch1 = 'e'
	fmt.Printf("b = %d,ch1 = %c\n", b, ch1)

}

//运行结果
// flag = bool
// t = 97
// a type is main.bigint
// b = 11,ch1 = e

本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值