![Go语言基础讲解_第1页](http://file4.renrendoc.com/view12/M05/3C/2C/wKhkGWXOpBSAVnnFAAD7p12qB_s991.jpg)
![Go语言基础讲解_第2页](http://file4.renrendoc.com/view12/M05/3C/2C/wKhkGWXOpBSAVnnFAAD7p12qB_s9912.jpg)
![Go语言基础讲解_第3页](http://file4.renrendoc.com/view12/M05/3C/2C/wKhkGWXOpBSAVnnFAAD7p12qB_s9913.jpg)
![Go语言基础讲解_第4页](http://file4.renrendoc.com/view12/M05/3C/2C/wKhkGWXOpBSAVnnFAAD7p12qB_s9914.jpg)
![Go语言基础讲解_第5页](http://file4.renrendoc.com/view12/M05/3C/2C/wKhkGWXOpBSAVnnFAAD7p12qB_s9915.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Go语言讲解Go语言介绍:Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++弋码的速度,而且更加安全、支持并行进程。Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。并发性:。Go语言为此专门创造出了一个关键字“ go”。使用这个关键字,我们就可以很容易的使一个函数被并发的执行:编程者不用考虑内存的泄露或者野指针的事情,因为GO:编程者不用考虑内存的泄露或者野指针的事情,因为GO语言会对内存进行管理。Go的主要特点有哪些?类型安全和内存安全以非常直观和极低代价的方案实现 高并发高效的垃圾回收机制快速编译(同时解决c语言中头文件太多的问题)为多核计算机提供性能提升的方案 可以指定cpu核数UTF-8编码支持可以支持多种字符格式Go语言编写规则:Go内置25个关键字(均为小写)breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitch
constfallthroughifrangetypeconstfallthroughifrangetypecontinuefor import return var注释方法同C语言//:单行注释/**/:多行注释Go程序的一般结构:命名方式:basic_structure.goGo程序是通过package来组织的(与python类似)只有package名称为main的包可以包含main函数一个可执行程序有且仅有一个main包通过import关键字来导入其它非 main包通过const关键字来进行常量的定义通过在函数体外部使用 var关键字来进行全局变量的声明与赋值通过type关键字来进行结构(struct)或接口(interface) 的声明通过func关键字来进行函数的声明
VisualStudioCpde至看(V)鸳刮越)嗯总(D}甚題iH]吏用 ShellaljgoX1〃当前程厚的包名packagerndin _JL■"导入其他的包import"常量的定5(constpi=3*1410"全局变量的声明5赋值11varnam@=TH"13〃一般类型的声明141EtypenewTypeirvt±J16"结构声明171Qtypeadcstruct{}lo"接口的声明typegolanginterfac?{}"由n日in()函数作为程序入口点启动funcmain(){RLfmt,Println("Hello *)}f^SE:\GoEAGoHellot匹t\格式览明,t/tA格式说明Agorunhellol.go世界!E:\GotestXft式说明>[]Go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包所调用:根据约定,函数名首字母 小写即为privategetField(vreflect+Value,i refleval:=■v.Field(i)ifval.Kind()==reflect.Interface£&!val=wal函数名首字母大写即为public函数名首字母大写即为publicPrintf(format吕ingj,衣,.*interf3ce{J)Fprintf(osiStdoutjformat?吕…}Go语言基本类型部分:布尔型:bool-长度:1字节-取值范围:true,false-注意事项:不可以用数字代表true或false整型:int/uint-根据运行平台可能为32或64位8位整型:int8/uint8-长度:1字节-取值范围:-128~127/0~255字节型:byte(uint8别名)16位整型:int16/uint16-长度:2字节-取值范围:-32768~32767/0~6553532位整型:int32(rune)/uint32-长度:4字节-取值范围:-2人32/2~2人32/2-1/0~2人32-164位整型:int64/uint64-长度:8字节-取值范围:-2A64/2~2A64/2-1/0~2A64-1浮点型:float32/float64-长度:4/8字节-小数位:精确到7/15小数位复数:plex64/plex128-长度:8/16字节足够保存指针的32位或64位整数型:uintptr其它值类型:-array、struct、string引用类型:-slice、map、chan接口类型:inteface函数类型:func变量的声明和赋值形式:变量的声明格式:var<变量名称><变量类型>变量的赋值格式:<变量名称>=<表达式>声明的同时赋值:var<变量名称>[变量类型]=<表达式>bint=321d:=456第一种:主要用于全局变量的使用中第二种:此种定义方式,用于变量进行运算的时候,所得到的结果也许会和变量的类型不一样,系统可以自行推断结果变量的类型,所以这也是很方便的。第三种:设置变量时,你已经有一个初始值时,就可以用这种方式。常量的定义常量的值在编译时就已经确定常量的定义格式与变量基本相同等号右侧必须是常量或者常量表达式常量表达式中的函数必须是内置函数t可int*1b='A't(te)ct=dh123"length= )num=b*2®ti,j,lc=1, 3t(te)ct2jlengthSjnum?-"45611jlcn(text2),k*10运算符Go中的运算符均是从左至右结合优先级(从高到低)一元运算符)二元运算符)专门用于二元运算符)专门用于channel)*/%<<>>&&A+-|A__!=<<=>=><-&&||指针Go虽然保留了指针,但与其它编程语言不同的是,在 Go当中不支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针目标对象的成员操作符”&”取变量地址,使用”*”通过指针间接访问目标对象默认值为nil而非NULL循环语句forGo只有for一个循环语句关键字,但支持3种形式初始化和步进表达式可以是多个值条件语句每次循环都会被重新检查,因此不建议在条件语句中使用函数,尽量提前计算好条件并以变量或常量代替左大括号必须和条件语句在同一行篇¥Ia-H-i*a>3IfmrtnPrintlr(a)main(){a■for'a<=3{a++)fnit,PrintIn(i<)nain()\a:=1f<i:=0;i<i+f{at+fmt.P-intln(a)选择语句switch可以使用任何类型或表达式作为条件语句不需要写break,一旦条件符合自动终止如希望继续执行下一个 case,需使用fallthrough语句支持一个初始化表达式(可以是并行方式),右侧需跟分号左大括号必须和条件语句在同一行“rnain(){a:=15 :L“rnain(){a:=15 :L日{t"I:=9:fmt.Printing"a-0p)C5F1:fwt.PrinHnCa=l")main(){E;=fnt.Println(B)fmt.Println(a)j1;fBt.Println(•■=!'}a1;«itch{a>-ft:fnrt・Prin-tln(',a=e,1)jn_tii■h.ax1:flirt.Println( )main(){switca>=e:f祉.Printh(飞蝴・)切片SliceGo语言切片是对数组的抽象。Go数组的长度不可改变,在特定场景中这样的集合就不太适用, Go中提供了一种灵活,功能强悍的内置类型切片(”动态数组”),与数组相比切片的长度是不固定的, 可以追加元素,在追加时可能使切片的容量增大。创建切片:varslicel[]type=make([]type,len)也可以简写为slicel:=make([]type,len)也可以指定切片的容量make([]T,length,capacity)切片的初始化s:=[] int{1,2,3}切片截取s1:=s[startIndex:endIndex]将s中从下标startIndex到endIndex-1下的元素创建为一个新的切片示例:packagemainimport"fmt"funcmain(){/*创建切片*/numbers:=[]int{0,1,2,3,4,5,6,7,8}printSlice(numbers)/*打印原始切片*/fmt.Println("numbers==",numbers)
/*打印子切片从索引1(包含)到索引4(不包含)*/fmt.Printin("numbers[1:4]==" ,numbers[1:4])/*默认下限为0*/fmt.Println("numbers[:3]==" ,numbers[:3])/*默认上限为len(s)*/fmt.Println("numbers[4:]==" ,numbers[4:])numbers1:=make([]int,0,5)printSlice(numbers1)/*打印子切片从索引 0(包含)到索引2(不包含)*/number2:=numbers[:2]printSlice(number2)/*打印子切片从索引2(包含)到索引5(不包含)*/number3:=numbers[2:5]printSlice(number3)}funcprintSlice(x[]int){fmt.Printf("len=%dcap=%dslice=%v\n",len(x),cap(x),x)}以上代码的执行结果:len=9cap=9slice=[012345678]
numbers==[012345678]numbers]1:4]==[123]numbers[:3]==[012]numbers]4:] ==[45678]len=0cap=5slice=[]len=2cap=9slice=[01]len=3cap=7slice=[234]Append()和copy()函数如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。下面的代码描述了从拷贝切片的 copy方法和向切片追加新元素的append方法。Go语言Map(集合)Map是一种无序的键值对的集合。 Map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值。Map是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过, Map是无序的,我们无法决定它的返回顺序,这是因为 Map是使用hash表来实现的。定义M即可以使用内建函数make也可以使用map关键字来定义Map:/*声明变量,默认map是nil*/varmap_variablemap[key_data_type]value_data_type/*使用make函数*/map_variable=make(mapkey_data_type]value_data_type)示例packagemainimport"fmt"
funcmain(){varcountryCapitalMapmap[string]string/*创建集合*/countryCapitalMap=make(mapstring]string)/*map插入key-value对,各个国家对应的首都 */countryCapitalMapcountryCapitalMapcountryCapitalMapcountryCapitalMapcountryCapitalMap["Italy"]="Rome"["Japan"]="Tokyo"countryCapitalMap["India"]="NewDelhi"/*使用key输出map值*/forcountry:=rangecountryCapitalMap{fmt.Println("Capitalof",country,"is",countryCapitalMap[country])或集合(map)的元素}/*range关键字用于for循环中迭代数组(array)、切片(slice)或集合(map)的元素在数组和切片中它返回元素的索引值,在集合中返回 key-value对的key值。*//*查看元素在集合中是否存在 */captial,ok:=countryCapitalMap["UnitedSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理公司居间合同
- 技术支持服务与合作框架协议
- 购物中心场地租赁合同
- 入股合伙人协议书
- 皮革买卖合同
- 企业生物科技研发战略合作协议
- 2025上海玻璃购销合同5篇
- 学会购物(教学设计)-2024-2025学年三年级上册数学冀教版
- Unit 5 The colourful(教学设计)-2024-2025学年人教PEP版(2024)英语三年级上册
- 第14课《背影》教学设计-2024-2025学年统编版语文八年级上册
- 代办电瓶车车牌照委托书
- 水泥-水泥的技术性质(建筑材料)
- 机械制图(高职)全套教学课件
- 突发事件紧急医学救援培训的情景模拟和现场演练
- 10000以内加减法混合竖式题
- 小学二年级-心理健康教育-11-等一等-会更好-教学设计
- 包装盒的工艺
- 2024年新华文轩出版传媒股份有限公司招聘笔试参考题库含答案解析
- 课件:曝光三要素
- 保密办保密工作述职报告范本
- 新课标理念下三现课堂教学模式的构建与实施
评论
0/150
提交评论