Go语言基本数据类型

Go语言有丰富的数据类型,出了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。

整型

整型分为两类:无符号、有符号;

其中uint就是byte型,int16就是C语言中short型,int64就是long型。

类型	描述 uint8	无符号 8位整型 (0 到 255) uint16	无符号 16位整型 (0 到 65535) uint32	无符号 32位整型 (0 到 4294967295) uint64	无符号 64位整型 (0 到 18446744073709551615) int8	有符号 8位整型 (-128 到 127) int16	有符号 16位整型 (-32768 到 32767) int32	有符号 32位整型 (-2147483648 到 2147483647) int64	有符号 64位整型 (-9223372036854775808 到 9223372036854775807) 

特殊整型

类型	描述 uint	32位操作系统上就是uint32,64位操作系统上就是uint64 int	32位操作系统上就是int32,64位操作系统上就是int64 uintptr	无符号整型,用于存放一个指针 

注意:在使用intuint类型时,不能假定它是32位或者64位,而要考虑intuint可能在不同平台上的差异。尤其是跨平台应用需注意。

注意事项:为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用intuint

八进制& 十六进制

Go语言中无法直接定义二进制数,关于八进制和十六进制数的示例如下:

package main  import "fmt"  // 整型 func main() { 	var i1 = 101 //类型推导,十进制数 	fmt.Printf("%dn", i1) 	fmt.Printf("%bn", i1)  //把十进制数转换成二进制 	fmt.Printf("%on", i1)  //把十进制数转换成八进制 	fmt.Printf("%oxn", i1) //把十进制数转换成十六进制  	//八进制 	i2 := 077 //短变量声明 	fmt.Printf("%dn", i2)  	//十六进制数 	i3 := 0x1234567abc 	fmt.Printf("%dn", i3)  	//查看变量类型 	fmt.Printf("%Tn", i3)  	//声明int8类型的变量 	i4 := int8(9) //明确指定int8类型,否则为int类型 	fmt.Printf("%Tn", i4) } 

浮点型

Go语言支持两种浮点型数:float32float64。打印浮点数时,可以使用fmt包配合%f,代码如下:

package main  import ( 	"fmt" 	"math" )  func main() { 	f1 := 3.14159 	fmt.Printf("%Tn", f1) //默认Go语言中的小数都是float64 	f2 := float32(3.14159) //显示声明float32 	fmt.Printf("%Tn", f2) //此处f1的值不能赋值给f2,类型不同 	fmt.Printf("%fn", math.Pi) 	fmt.Printf("%.2fn", math.Pi) } 

输出:

D:Gosrcgithub.comhooo818studygoday015float>.5float.exe 3.141593 3.14 

复数

complex64complex128

复数有实部和虚部,complex64的实部和虚部都是32位,complex128的实部和虚部都是64位。

var c1 complex64 c1= 1+ 2i var c2 complex128 c2= 3+ 4i fmt.printf("%Tn", c1) fmt.Printf("%Tn", c2) 

布尔值

Go语言中以bool类型进行声明布尔类型数据,布尔类型数据只有true(真)false(假)两个值。

import "fmt"  func main() { 	//布尔类型 	b1 := true 	var b2 bool 	fmt.Printf("%Tn", b1) 	fmt.Printf("%T value:%vn", b2, b2) } 

输出结果:

bool bool value:false //默认值是false 

注意:

  1. 布尔类型变量的默认值为false
  2. Go语言中不允许将整型强制转换为布尔型;
  3. 布尔型无法参与数值运算,也无法与其他类型进行转换。

字符串

Go语言中字符串以原生数据类型出现,使字符串就像使用它的原生数据类型intboolfloat32float64等一样。Go语言里面的字符串的内部实现使用utf-8编码。字符串的值为双引号("...")中的内容。可以在Go语言的源码中直接添加非ASCII码,例如:

s1:= "Hello" s2:= "你好" 

注意:Go语言中字符串必须使用双引号("")包裹,Go语言中单引号('')包裹的字符是字符(单独的字母、汉字、符号表示一个字符

s:= "Hello Go 语言" //字符串 c1:= 'h' //字符 c2:= 'l' //字符 c3:= '洪' //字符,一个utf8汉字占3个字节 

字符串转义符

转义符	含义 r	回车符(返回行首) n	换行符(直接跳到下一行的同列位置) t	制表符 '	单引号 "	双引号 \	反斜杠 

例如:

package main  import "fmt"  //字符串  func main() { 	//本来是具有特殊含义的,此时需要转义 	path := ""D:\Go\src\github.com\hooo818\studygo\day01string"" 	fmt.Println(path)  	s := "I'm  OK" 	fmt.Println(s)  	//多行字符串 	s2 := ` 		床前明月光 		疑是地上霜 	` 	fmt.Println(s2) } 

输出结果为:

"D:Gosrcgithub.comhooo818studygoday018string" I'm  OK                  床前明月光                 疑是地上霜 

多行字符串

Go语言中要定义一个多行字符串时,就必须使用反引号字符(Esc键下方那个键);反引号间换行将被作为字符串中的换行,但是所有的转义字符无效,文本将会被原样输出

字符串常用操作

方法	                                     介绍 len(str)	                              求长度 +或fmt.Sprintf	                         拼接字符串 strings.Split	                          分割 strings.contains	                      判断是否包含 strings.HasPrefix,strings.HasSuffix	      前缀/后缀判断 strings.Index(),strings.LastIndex()	      子串出现的位置 strings.Join(a[]string, sep string)	      join操作 
package main  import ( 	"fmt" 	"strings" )  //字符串  func main() { 	//本来是具有特殊含义的,此时需要转义 	path := ""D:\Go\src\github.com\hooo818\studygo\day01string"" 	fmt.Println(path)  	s := "I'm  OK" 	fmt.Println(s)  	//多行字符串 	s2 := ` 		床前明月光 		疑是地上霜 	` 	fmt.Println(s2)  	//字符串相关操作 	fmt.Println(len(s)) //字符串长度  	name := "理想" 	world := "帅"  	ss := name + world //使用 "+"" 拼接字符串 	fmt.Println(ss)  	ss1 := fmt.Sprintf("%s%s", name, world) //使用fmt.Sprintf()拼接字符串,拼接后返回一个字符串 	fmt.Println(ss1)  	fmt.Printf("%s%sn", name, world) //仅仅是打印在一起  	//分割 	ret := strings.Split(path, "\") 	fmt.Println(ret) //["D: Go src github.com hooo818 studygo day01 08string"]  	//判断是否包含 	fmt.Println(strings.Contains(ss1, "理想")) //true  	//前缀、后缀判断 	fmt.Println(strings.HasPrefix(ss1, "理想")) //true 	fmt.Println(strings.HasSuffix(ss1, "帅"))  //true  	//判断字串出现的位置 	ss2 := "abcdefb" 	fmt.Println(strings.Index(ss2, "c"))  //2 	fmt.Println(strings.Index(ss2, "bc")) //1 	fmt.Println(strings.LastIndex(ss2, "b")) //6  	//拼接 	fmt.Println(strings.Join(ret, "+")) //"D:+Go+src+github.com+hooo818+studygo+day01+08string" } 

fmt占位符

package main  import "fmt"  //fmt 占位符 func main() { 	var n = 100 	fmt.Printf("%Tn", n) //查看类型 	fmt.Printf("%vn", n) //查看变量的值 	fmt.Printf("%dn", n) //十进制 	fmt.Printf("%bn", n) //二进制 	fmt.Printf("%on", n) //八进制 	fmt.Printf("%xn", n) //十六进制  	var s = "Let us Go" 	fmt.Printf("%sn", s) //字符串     fmt.Printf("%#vn", s)//会给字符串加上引号 } 

推荐这些文章:

Go 语言字符串常见操作

@目录1. 字节数组2. 头尾处理3. 位置索引4. 替换5. 统计次数6. 重复7. 大小写8. 去除字符9. 字符串切片处理10. 数值处理

1. 字节数组
字节与字符的区别

字节(Byte) 是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位

字符(Character) ...

go语言if条件语句

package main

import "fmt"

func main() {
//if语句
//num := 11
//if num % 2 == 0 {
// fmt.Println("偶数")
//}else{
// fmt.Println("奇数")
//}

score := 55
if score &...

Go语言strings包基本操作

  1.字符串比较
    常用方法: strings.Compare(),strings.EqualFold()

func main() {
a := "Hello"
b := "hello"
// 用于比较两个字符串的大小,如果两个字符串相等,返回为 0。如果 a 小于 b ,返回 -1 ,反之返回 1
f...

文章标题:Go语言基本数据类型
文章链接:https://www.dianjilingqu.com/3445.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>