Go语言学习PPT课件.ppt_第1页
Go语言学习PPT课件.ppt_第2页
Go语言学习PPT课件.ppt_第3页
Go语言学习PPT课件.ppt_第4页
Go语言学习PPT课件.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Go语言分享 Go简介环境搭建HelloWorldWeb框架 Go简介 Go 又称Golang 是Google开发的一种静态强类型 编译型 并发型 并具有垃圾回收功能的编程语言 Go语言是2007年开发2009年发布的一款开源编程语言Go语言专门针对多处理器系统应用程序的编程进行了优化 使用Go编译的程序可以媲美C或C 代码的速度 而且更加安全 支持并行进程 Go是一种跨平台 MacOS Windows Linux等 静态编译型语言 拥有媲美C语言的强大性能 在普通计算机上能几秒内快速编译一个大项目 开发效率跟动态语言相差无几 很多开源项目都是使用Go语言开发的 其中包括Docker Etcd Codis Consul和Kubernetes Go大神 Go语言的主要开发者有 肯 汤姆逊 KenThompson 罗布 派克 RobPike 和罗伯特 格里泽默 RobertGriesemer 这三个都是大神肯 汤姆逊 KenThompson 图灵奖 计算器界的诺贝尔奖 得主 Uinx发明人 Linux基于Uinx内核开发 B语言作者 C语言前身 还做飞行员 后来被谷歌挖走 罗布 派克 RobPike Unix团队和Plan9操作系统计划的成员 与Ken老爷子共事多年 并共创出广泛使用的UTF 8字符编码 罗伯特 格里泽默 RobertGriesemer 曾协助制作Java的HotSpot编译器 和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 O2012的Go见面会上 RobPike是这样说的 我们做了大量的C 开发 厌烦了等待编译完成 尽管这是玩笑 但在很大程度上来说也是事实 Go语言特性 静态编译 编译器将源代码编译成二进制 或字节码 格式 在编译代码时 编译器检查错误 优化性能并输出可在不同平台上运行的二进制文件 Go语言保证了既能到达静态编译语言的安全和性能 又达到了动态语言开发速度和易维护性 有人形容Go语言 Go C Python 说明Go语言既有C静态语言程序的运行速度 又能达到Python动态语言的快速开发 类型安全内存安全 自动垃圾回收 编译速度快 构建一个程序的时间只需要数百毫秒 函数可以返回多个值反射网络编程 系统编程 并发编程 分布式编程 部署简单 并发性好 语言设计良好 执行性能好 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包管理 godepgobuild项目编译成二进制文件 执行二进制文件启动项目如 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实际是编译成二进制文件再执行 gobuildhelloworld go helloworld 第一行代码packagemain定义了包名 你必须在源文件中非注释的第一行指明这个文件属于哪个包 如 packagemain packagemain表示一个可独立执行的程序 每个Go应用程序都包含一个名为main的包 下一行import fmt 告诉Go编译器这个程序需要使用fmt包 的函数 或其他元素 fmt包实现了格式化IO 输入 输出 的函数 下一行funcmain 是程序开始执行的函数 main函数是每一个可执行程序所必须包含的 一般来说都是在启动后第一个执行的函数 如果有init 函数则会先执行该函数 变量常量 packagemainimport fmt 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 Println 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 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 varerrboolvarvalintval 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 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 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 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 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 ni

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论