Go语言学习.ppt

上传人:飞****9 文档编号:132457856 上传时间:2020-05-16 格式:PPT 页数:21 大小:1.26MB
返回 下载 相关 举报
Go语言学习.ppt_第1页
第1页 / 共21页
Go语言学习.ppt_第2页
第2页 / 共21页
Go语言学习.ppt_第3页
第3页 / 共21页
Go语言学习.ppt_第4页
第4页 / 共21页
Go语言学习.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《Go语言学习.ppt》由会员分享,可在线阅读,更多相关《Go语言学习.ppt(21页珍藏版)》请在金锄头文库上搜索。

1、Go语言分享 Go简介环境搭建HelloWorldWeb框架 Go简介 Go 又称Golang 是Google开发的一种静态强类型 编译型 并发型 并具有垃圾回收功能的编程语言 Go语言是2007年开发2009年发布的一款开源编程语言Go语言专门针对多处理器系统应用程序的编程进行了优化 使用Go编译的程序可以媲美C或C 代码的速度 而且更加安全 支持并行进程 Go是一种跨平台 MacOS Windows Linux等 静态编译型语言 拥有媲美C语言的强大性能 在普通计算机上能几秒内快速编译一个大项目 开发效率跟动态语言相差无几 很多开源项目都是使用Go语言开发的 其中包括Docker Etcd

2、 Codis Consul和Kubernetes Go大神 Go语言的主要开发者有 肯 汤姆逊 KenThompson 罗布 派克 RobPike 和罗伯特 格里泽默 RobertGriesemer 这三个都是大神肯 汤姆逊 KenThompson 图灵奖 计算器界的诺贝尔奖 得主 Uinx发明人 Linux基于Uinx内核开发 B语言作者 C语言前身 还做飞行员 后来被谷歌挖走 罗布 派克 RobPike Unix团队和Plan9操作系统计划的成员 与Ken老爷子共事多年 并共创出广泛使用的UTF 8字符编码 罗伯特 格里泽默 RobertGriesemer 曾协助制作Java的HotSpo

3、t编译器 和Chrome浏览器的JavaScript引擎V8膜拜一下大神的容颜 Ken老爷子 左 RobPike 右 开发Go语言的初衷 根据Go语言开发者自述 近10多年 从单机时代的C语言到现在互联网时代的Java 都没有令人满意的开发语言 而C 往往给人的感觉是 花了100 的经历 却只有60 的开发效率 产出比太低 Java和C 的哲学又来源于C 并且 随着硬件的不断升级 这些语言不能充分的利用硬件及CPU Go的主要目标是 兼具Python等动态语言的开发速度和C C 等编译型语言的性能与安全性Go语言的所有设计者都说 设计Go语言是因为C 给他们带来了挫败感 在GoogleI O2

4、012的Go见面会上 RobPike是这样说的 我们做了大量的C 开发 厌烦了等待编译完成 尽管这是玩笑 但在很大程度上来说也是事实 Go语言特性 静态编译 编译器将源代码编译成二进制 或字节码 格式 在编译代码时 编译器检查错误 优化性能并输出可在不同平台上运行的二进制文件 Go语言保证了既能到达静态编译语言的安全和性能 又达到了动态语言开发速度和易维护性 有人形容Go语言 Go C Python 说明Go语言既有C静态语言程序的运行速度 又能达到Python动态语言的快速开发 类型安全内存安全 自动垃圾回收 编译速度快 构建一个程序的时间只需要数百毫秒 函数可以返回多个值反射网络编程 系统

5、编程 并发编程 分布式编程 部署简单 并发性好 语言设计良好 执行性能好 Go环境搭建 官网下载地址 Unix Linux上安装Go环境 tar zxvfxxx tar gz解压 vim bashrc或 vim etc profile exportGOROOT Users liang software go1 10 3 exportPATH GOROOT bin PATH exportGOPATH Users liang ideaWorkspace go source bashrc或 source etc profile 配置生效 goversion Godep安装 类似maven包管理 go

6、depgobuild项目编译成二进制文件 执行二进制文件启动项目如 web demo godepsave此时会生成Godeps文件夹 同时将引用的包放入vendor文件夹中 Godeps json就相当于java的maven里pom xml 如果GOPATH路径下没有依赖包会报找不到包 需要手动下载 如 HelloWorld packagemain 声明本文件的package名import fmt import语言的fmt库 用于输出funcmain fmt Println Hello World gorunhelloworld go实际是编译成二进制文件再执行 gobuildhellowor

7、ld go helloworld 第一行代码packagemain定义了包名 你必须在源文件中非注释的第一行指明这个文件属于哪个包 如 packagemain packagemain表示一个可独立执行的程序 每个Go应用程序都包含一个名为main的包 下一行import fmt 告诉Go编译器这个程序需要使用fmt包 的函数 或其他元素 fmt包实现了格式化IO 输入 输出 的函数 下一行funcmain 是程序开始执行的函数 main函数是每一个可执行程序所必须包含的 一般来说都是在启动后第一个执行的函数 如果有init 函数则会先执行该函数 变量常量 packagemainimport f

8、mt funcmain 声明初始化一个变量varxint 100varstrstring helloworld 声明初始化多个变量vari j kint 1 2 3 不用指明类型 通过初始化值来推导varb true bool型constLENGTHint 10 常理fmt Println x str i j k b LENGTH abc funcabc varv21int32 被定义初始化为0varv22int 2varv23 3 被自动识别为int类型v24 4 简易声明v21 int32 v23 强制转换g h 123 hello 注意 下行这种不带声明格式的只能在函数体中出现fmt P

9、rintln v21is v21 v21被赋新值fmt Println v22is v22 fmt Println v23is v23 fmt Println v24is v24 fmt Println g h 数组 packagemainimport fmt funcmain vara 5 intfmt Println arraya a a 1 10a 3 30fmt Println assign a fmt Println len len a b 5 int 1 2 3 4 5 fmt Println init b varc 2 3 intfori 0 i 2 i forj 0 j 3 j

10、 c i j i j fmt Println 2d c 多返回值 packagemainimport fmt funcmain v e multi return one fmt Println v e 输出1truev e multi return four fmt Println v e 输出0false 通常的用法 注意分号后有e ifv e multi return four e 正常返回 else 出错返回 funcmulti return keystring int bool m map string int one 1 two 2 three 3 varerrboolvarvali

11、ntval err m key returnval err packagemainimport fmt typePersonstruct namestringageintemailstring funcmain 初始化person Person Tom 30 tom fmt Println person 输出 Tom30tom varperson2 Person name jan age 24 email jan fmt Println person2 pPerson personfmt Println pPerson 输出 Tom30tom pPerson age 40person name

12、 Jerry fmt Println person 输出 Jerry40tom 结构体 结构体方法 packagemainimport fmt typerectstruct width heightint func r rect area int 求面积returnr width r height func r rect perimeter int 求周长return2 r width r height 注意 Go语言中没有public protected private的关键字 所以 如果你想让一个方法可以被别的包访问的话 你需要把这个方法的第一个字母大写 这是一种约定 funcmain r

13、 rect width 10 height 15 fmt Println 面积 r area fmt Println 周长 r perimeter rp rfmt Println 面积 rp area fmt Println 周长 rp perimeter 接口和多态 packagemainimport math fmt 接口 typeshapeinterface area float64 计算面积perimeter float64 计算周长 长方形 typerectsstruct width heightfloat64 func r rects area float64 面积returnr

14、width r height func r rects perimeter float64 周长return2 r width r height 圆形 typecirclestruct radiusfloat64 func c circle area float64 面积returnmath Pi c radius c radius func c circle perimeter float64 周长return2 math Pi c radius 接口的使用 funcmain r rects width 2 9 height 4 8 c circle radius 4 3 s shape r

15、 c 通过指针实现for sh ranges fmt Println sh fmt Println sh area fmt Println sh perimeter httpserver 监听一个端口如此简单 packagemainimport net http fmt log funcmain http请求处理http HandleFunc test test fmt Print httpserverstart 绑定监听地址和端口log Fatal http ListenAndServe 127 0 0 1 8080 nil functest whttp ResponseWriter r http Request fmt Fprintln w helloworld Web框架 性能对比 最好的6个Go语言Web框架 Web框架 Iris之web demo http接口 json请求和响应 返回html页面使用mysql和redis拦截器日志全局异常处理Etcd动态修改配置Godep包管理docker编译打包部署python测试 示例地址 小demo地址 Theend Thankyou

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号