logo资料库

golang基础.ppt

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
Golang基础介绍
一.Golang语言发展背景 二.基本语法 内容索引 1. 数据类型 2. 变量定义 3. 控制结构 4. 函数function 5. 结构体struct 6. 面向对象 7. 接口interface 8. 恐慌panic和恢复recover 9. 并发goroutine和channel 10. Import和package 11. main,init,test 12. 指针和内存分配(new和make) 三.Web小实例
• Ken Thompson:1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology) Golang语言发展背景 • Rob Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年, 得主。他与Dennis Ritchie是Unix的原创者。 并共创出广泛使用的UTF-8 字元编码。 • Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。 Go被设计为21世纪的C语言,同时它吸收了很多现在编程语言的优点。 基于BSD完全开源,所以能免费的被任何人用于适合商业目的。 它不是传统意义上的面向对象语言(没有类的概念),但它有接口(interface),由此实现多态特性。 函数(Function)是它的基本构成单元(也可以叫着面向函数的程序设计语言)。 语言层面对并发的支持 在语言层面加入对并发的支持,而不是以库的形式提供 更高层次的并发抽象,而不是直接暴露OS的并发机制。 支持交叉编译,并采用编译的编码:UTF-8 类型安全和内存安全:在指针类型,但不允许对指针进行操作 具有内存垃圾回收机制 支持网络通信、并发控制、并行计算和分布式计算。 在语言层面实现对多处理器(或多核)进行编程
基本类型: 布尔:bool 字符串:string 整数: 数据类型 int 在 32 位操作系统上,它们均使用 32 位(4 个字节),在 64 位操作系统上,它们均使用 64 位(8 个字节) int8(-128 -> 127) int16(-32768 -> 32767) int32(-2,147,483,648 -> 2,147,483,647) int64(-9,223,372,036,854,775,808 -> 9,223,372,036,854,775,807) 无符号整数: uint uint8(0 -> 255) uint16(0 -> 65,535) uint32(0 -> 4,294,967,295) uint64(0 -> 18,446,744,073,709,551,615) 浮点型(IEEE-754 标准): 没有float float32(+- 1e-45 -> +- 3.4 * 1e38) float64(+- 5 1e-324 -> 107 1e308) 复数 complex64 (32 位实数和虚数) complex128 (64 位实数和虚数) (rune是int32的别称,byte是uint8的别称) 复合类型 数组:[ ]string, [ ] int 切片: slice 字典: map 通道: channel    空:nil java中的类型 List Map
变量定义 使用var关键字是Go最基本的定义变量方式,与java语言不同的是Go把变量类型放在变量名后面: //定义一个名称为“variableName”,类型为"type"的变量 var variableName type 定义多个变量 //定义三个类型都是“type”的变量 var vname1, vname2, vname3 type 定义变量并初始化值 //初始化“variableName”的变量为“value”值,类型是“type” var variableName type = value 同时初始化多个变量 /* 定义三个类型都是"type"的变量,并且分别初始化为相应的值 vname1为v1,vname2为v2,vname3为v3 */ var vname1, vname2, vname3 type= v1, v2, v3 用= 声明 var a int var b bool a = 15 b = false 用:= 声明 a := 15 b := false
变量定义 a := [3]int{1, 2, 3} // 声明了一个长度为3的int数组 b := [10]int{1, 2, 3} // 声明了一个长度为10的int数组,其中前三个元素初始化为1、2、3,其它默认为0 c := [...]int{4, 5, 6} // 可以省略长度而采用`...`的方式,Go会自动根据元素个数来计算长度 len 获取slice的长度 append 向slice里面追加一个或者多个元素 Array Slice Map slice := []byte {'a', 'b', 'c', ‘d’} // 声明一个数组 var array = [10]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} // 声明两个slice var aSlice // 演示一些简便操作 aSlice = array[:3] // 等价于aSlice = array[0:3] aSlice包含元素: a,b,c aSlice = array[5:] // 等价于aSlice = array[5:10] aSlice包含元素: f,g,h,i,j aSlice = array[:] // 等价于aSlice = array[0:10] 这样aSlice包含了全部的元素 // 声明一个key是字符串,值为int的字典,这种方式的声明需要在使用之前使用make初始化 var numbers map[string]int // 另一种map的声明方式 numbers := make(map[string]int) numbers["one"] = 1 //赋值 numbers["ten"] = 10 //赋值 numbers["three"] = 3 key:val的方式初始化值 delete删除map的元素
if goto 控制结构 if integer == 3 {     fmt.Println("The integer is equal to 3") } else if integer < 3 {     fmt.Println("The integer is less than 3") } else {     fmt.Println("The integer is greater than 3") } // 计算获取值x,然后根据x返回的大小,判断是否大于10 if x := computedValue(); x > 10 {     fmt.Println("x is greater than 10") } else {     fmt.Println("x is less than 10") }   //这个地方如果这样调用就编译出错了,因为x是条件里面的变量 fmt.Println(x) func myFunc() {     i := 0 Here:   //这行的第一个词,以冒号结束作为标签     println(i)     i++     goto Here   //跳转到Here去 } for sum := 0;     for index:=0; index < 10 ; index++ {         sum += index     }     fmt.Println("sum is equal to ", sum) sum := 1 for sum < 10 {     sum += sum } for k,v:=range map {     fmt.Println("map's key:",k)     fmt.Println("map's val:",v) }
控制结构 switch i := 10 switch i { case 1:     fmt.Println("i is equal to 1") case 2, 3, 4:     fmt.Println("i is equal to 2, 3 or 4") case 10:     fmt.Println("i is equal to 10") default:     fmt.Println("All I know is that i is an integer") } switch默认相当于每个case最后带有break, 匹配成功后跳出整个switch; 可以使用fallthrough执行后面的case integer := 6 switch integer { case 4:     fmt.Println("The integer was <= 4")     fallthrough case 5:     fmt.Println("The integer was <= 5")     fallthrough case 6:     fmt.Println("The integer was <= 6")     fallthrough case 7:     fmt.Println("The integer was <= 7")     fallthrough case 8:     fmt.Println("The integer was <= 8")     fallthrough default:     fmt.Println("default case") } 输出 The integer was <= 6 The integer was <= 7 The integer was <= 8 default case
分享到:
收藏