上一篇我们学习了Go语言基础中的变量,一文带你了解Go语言基础中的变量。本篇我们继续介绍Go语言基础知识,今天给大家分享的是基础数据类型,一起来学习吧~前言大家好,我是星期五,这次我们继续学习Go的基本数据类型。iotaiota是Go中的常量计数器,只能和常量(const)一起使用。我们先来了解一下这段话。当出现const关键字时,iota将被重置为0。每在const中添加一行新的常量,iota就会计数(+1)一次。例1:packagemainimport"fmt"funcmain(){const(n1=iota//在const关键字出现时,会重置为0n2//不写相当于写n2=iota,每换行常量iotacounts(+1),n2=1n3//同上n3=2n4//同上n4=3)fmt.Println(n1,n2,n3,n4)}例2:遇到_会怎样。packagemainimport"fmt"funcmain(){const(n1=iota//出现const关键字时,会重置为0n2//n2=1_//匿名变量,相当于写了一个_=iota,所以在这timeiota=2n4//n4=3)fmt.Println(n1,n2,n4)}示例3:一行中有多个iota。packagemainimport"fmt"funcmain(){const(a,b=iota+1,iota+2//出现const关键字时,iota=0,且两次赋值在同一行,iota不做+1c,d//同理,新增一行常量,常量个数为2,还是一行,所以iota=1//c,d=iota+1,iota+2同上,在这次iota=1,c=2,d=3e,f//同上,e=3,f=4)fmt.Println(a,b,c,d,e,f)}integer整数,很很简单,就像1,2,3,7,11,..这样的整数。但是在围棋中,整数分为两类,正整数和无符号整数。u开头的非负数在不同平台上的区别。例子:packagemainimport"fmt"funcmain(){vara=10//定义一个十进制数fmt.Printf("%T\n",a)//函数:打印变量类型,结果:默认为int类型,也叫int64fmt.Printf("%d\n",a)//函数:十进制输出,结果:10fmt.Printf("%b\n",a)//函数:二进制输出,结果:1010fmt.Printf("%o\n",a)//函数:二进制输出,结果:12varb=0b1010011010//定义一个二进制数1010011010,从0b开始fmt.Printf("%d\n",b)//结果:666varc=077//定义一个八进制数77fmt.Printf("%d\n",c)//result:63vard=0x42//定义一个十六进制数42fmt.Printf("%d\n",d)//result:66}Go中的浮点数类型,只有float32和float64,默认是float64。示例:packagemainimport"fmt"funcmain(){vara=1.21//默认为float64fmt.Printf("%T\n",a)//结果:float64fmt.Printf("%f\n",a)//函数:输出浮点数,result:1.210000fmt.Printf("%.1f\n",a)//功能:输出浮点数,保留一位小数,其他忽略,result:1.2fmt.Printf("%.2f\n",a)//功能:输出浮点数,保留两位小数,其他忽略,结果:1.21}布尔值在Go中,bool类型有两个值,true和false.没有例子。注意:bool类型的默认值为false。true!=1,在Go中,bool类型和integer类型不能混用。字符串终于出现了。在Go中,字符串是基本数据类型,存储在栈中。字符串的值是用双引号("")括起来的内容。例子:packagemainimport"fmt"funcmain(){varname="hello"varname2="张三"fmt.Println(name,name2)}在Go中,字符串内存布局如下。其实在Go中,字符串的本质就是一个个字符的拼接。多行字符串有时候我们可能需要很长很长的字符串,这时候就需要用到`符号。packagemainimport"fmt"funcmain(){varlyric=`昨晚一家人聚在一起推杯换盏。今天,茶、冷酒、冷言冷语都是笑话。半辈子已尽,铭文却尽善尽美。谁会见山水之间的幽静?青石板上的油纸伞`fmt.Println(lyric)}字符串常用操作示例代码Println(len(name))//因为中文是utf8,一个字符是三个字节,加上一个符号,所以是13//fmt.Sprintfor+拼接字符串//name1:="Zhang"//name2:="three"//name:=name1+name2//拼接字符串//fmt.Println(name)//name:=fmt.Sprintf("%s%s",name1,name2)//同上,但是这样更灵活,推荐//name:=fmt.Sprintf("我的名字是:%s%s",name1,name2)//自定义拼接//fmt.Println(name)//strings.splitsplitstring//name:="张三|18|男|亡命之徒"//info:=strings.Split(name,"|")//fmt.Println(info)//返回的是Slice,[张散18男法外狂热]//strings.containscontains//name:="张三666"//result:=strings.Contains(name,"6")//fmt.Println(result)//返回的是bool类型,true//strings.HasPrefix判断前缀(是否以某物开头)//name:="web/student/xxx.html"//result:=strings.HasPrefix(name,"web")//fmt.Println(result)//true//strings.HasSuffix判断后缀(是否以某物结尾)//name:="web/student/xxx.html"//result:=strings.HasSuffix(name,"html")//fmt.Println(result)//true//strings.Index()返回第一个字符串出现的位置//name:="helloworld"//index:=strings.Index(name,"o")//fmt.Println(index)//4//strings.LastIndex()//正数,返回最后一个字符串出现的位置//name:="helloworld"//index:=strings.LastIndex(name,"o")//fmt.Println(index)//7//strings.Join(a[]string,sepstring)字符串拼接//info_list:=[]string{"张三","男","18"}//定义一个列表//name:=strings.Join(info_list,"|")//fmt.Println(name)//张三|男|18}总结以上我们学习了Go的基本数据类型
