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 无符号整型,用于存放一个指针
注意:在使用int
和uint
类型时,不能假定它是32位或者64位,而要考虑int
和uint
可能在不同平台上的差异。尤其是跨平台应用需注意。
注意事项:为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int
和uint
。
八进制& 十六进制
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语言支持两种浮点型数:float32
和float64
。打印浮点数时,可以使用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.comhooo818studygoday01 5float>. 5float.exe 3.141593 3.14
复数
complex64
和complex128
复数有实部和虚部,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
注意:
- 布尔类型变量的默认值为
false
; - Go语言中不允许将整型强制转换为布尔型;
- 布尔型无法参与数值运算,也无法与其他类型进行转换。
字符串
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.comhooo818studygoday01 8string" 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)//会给字符串加上引号 }
推荐这些文章:
@目录1. 字节数组2. 头尾处理3. 位置索引4. 替换5. 统计次数6. 重复7. 大小写8. 去除字符9. 字符串切片处理10. 数值处理
1. 字节数组
字节与字符的区别
字节(Byte) 是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位
字符(Character) ...
package main
import "fmt"
func main() {
//if语句
//num := 11
//if num % 2 == 0 {
// fmt.Println("偶数")
//}else{
// fmt.Println("奇数")
//}
score := 55
if score &...
1.字符串比较
常用方法: strings.Compare(),strings.EqualFold()
func main() {
a := "Hello"
b := "hello"
// 用于比较两个字符串的大小,如果两个字符串相等,返回为 0。如果 a 小于 b ,返回 -1 ,反之返回 1
f...
文章链接:https://www.dianjilingqu.com/3445.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。