当前位置: 首页 > 后端技术 > PHP

体验一下go语言的风骚编程

时间:2023-03-29 14:25:09 PHP

最近想搞后台开发,于是把注意力转移到了公司用的golang上。用Go做微服务更方便,可能是因为golang强大的语法吧。看到go的语法,就被深深吸引了。一起来感受下Go的风骚编码风格吧。1、魔鬼式变量声明2、数组声明array是一个数组,其定义如下:vararr[n]type[n]type中,n表示数组的长度,type表示存储的类型元素。对数组的操作和其他语言类似,通过[]读取或赋值:vararr[10]int//声明一个int类型的数组arr[0]=42//数组下标从0开始arr[1]=13//赋值操作fmt.Printf("第一个元素是%d\n",arr[0])//获取数据,返回42fmt.Printf("最后一个元素是%d\n",arr[9])//返回最后一个未赋值的元素,默认返回0由于长度也是数组类型的一部分,[3]int和[4]int是不同的类型,数组不能改变长度.数组之间的赋值是值的赋值,即数组作为参数传入函数时,传入的实际上是数组的副本,而不是它的指针。如果要使用指针,则需要使用后面介绍的slice类型。Arrayscanbedeclaredusinganother:=a:=[3]int{1,2,3}//声明一个长度为3的int数组b:=[10]int{1,2,3}//声明一个int长度为10的数组,前三个元素初始化为1,2,3,其他默认为0c:=[...]int{4,5,6}//长度可以省略而使用`...`方法,Go会自动根据元素个数计算长度。3、go语言强大的切片操作golang中的切片非常强大,使得数组操作非常方便高效。开发中所有用变长表示的数组都是切片。但是很多同学对切片的理解比较模糊,导致他们认为golang中的数组就是引用类型。结果在实际开发中遇到了很多坑,以至于出现了一些莫名其妙的问题。数组中的数据丢失了切片的数据结构。很简单,一个指针ptr,指向真正的数组地址,slice的长度len和容量cap。其中len和cap是我们调用len(slice)和cap(slice)返回的值。下面根据slice的数据结构定义来分析ptr,len,cap代码4、map的声明注意因为go语言是强类型语言,hashmap也是有类型的,具体体现在key和map都是value必须指定类型,比如声明一个key为string,value也为string的map,需要在go语言中做枚举5.for循环遍历funcformapTest(){vararrayi=[...]int{1,2,3,4,5,6,7,78,9,10}对于索引,c:=rangearrayi{fmt.Printf("array[%d]=%d",index,c)}str:="Go语言的学习和爸爸"fori,ch:=rangestr{fmt.Println(i,ch)//ch的类型为runeunicode编码}//输出为:28907(Unicode编码,两个字节代表一个字符)n:=len(str)fori:=0;我0{r,size:=utf8.DecodeRune(bytes)fmt.Printf("%c%d",r,size)//}fmt.Println()fmt.Println()fmt.Println()fori,c:=rangebytes{r,_:=utf8.DecodeRune(bytes)fmt.Printf("%d%c%x\n",i,r,c)}fori,ch:=range[]rune(str){fmt.Printf("%d:%c",i,ch)}str2:="123adfg是不是开adfgticketon时间sjdf"sps:=strings.Split(str2,"")sps=strings.Fields(str2)varisContact=strings.Contains(str2,"you")fmt.Println(sps)fmt.Println(isContact)}6、golang中的结构与继承7、golang中的接口8、golang中的空接口类似于java中的对象,空接口(interface{})不包含任何方法,正因如此,所有类型都实现空界面。空接口在描述中没有起到任何作用(因为它不包含任何方法),但是空接口在我们需要存储任何类型的值时非常有用,因为它可以存储任何类型的数值。有点类似于C语言的void*类型。一个函数以interface{}为参数,那么它可以接受任何类型的值作为参数,如果一个函数返回interface{},它也可以返回任何类型的值。是不是很有用!9.字段可以在结构中定义,但不能在接口中定义。结构和接口不能有相同的API,因为接口不能定义字段。这没什么大不了的,因为您可以在接口中定义getter和setter,尽管这有点令人困惑。eg:10、PublicandPrivateNamingGolang进一步发展了Python的公有和私有方法命名方案。当我第一次发现以大写字母开头的函数和结构是public,而小写字母是private时,我觉得很奇怪,但我喜欢这种语法。typePublicStructNamestruct{}//public可以被外部调用typeprivateStructNamestruct{}//私有结构,只能调用内部函数最后,先说到这里,golang的语法有很多,这只是冰山一角.如果你想学golang,我这里推荐:https://github.com/Unknwon/th...阅读更多Android面试题31道,巩固基础!后台选择Java、Go还是PHP?AndroidUtils:Android开发者必须收藏的Utils技术!