Go 语言数据类型
浮点型
布尔型
字符串
数组
切片
结构体
函数
map
通道 。。。。。等
整型
整型分为两大类
按长度分为:
int8、int16、int32、int64
对应的无符号整型:
uint8、uint16、uint32、uint64
package main
import "fmt"
// 整型
数字字面量语法,便于开发者以二进制、八进制、16进制浮点数格式定义数字
func main() {
var i1 = 101 //
fmt.Printf("%d\n",i1) //%d 表示10进制数
fmt.printf("%b"\n,i1) //%b 表示2进制数
i2 := 0xff
fmt.Printf("%x\n",i2) //%x 表示16进制数
i3 := 077
fmt.Printf("%o\n",i3) //%o 表示8进制
i4 := "hello world"
fmt.Printf("%s\n",i4) //%s 表示字符串
i5 := int8(9)
fmt.Printf("%T\n",i5) //%T查看类型 明确指定init8类型,否则默认int类型
}
浮点型
package main
import "fmt"
//浮点数
func main() {
//math.MaxFloat32 //float32 最大值
f1 := 1.23456
fmt.Printf("%T\n",f1) //默认Go语言中的小数是float64类型
f2 := float32(1.23456)
fmt.Printf("%T\n",f2) //显示声明float32类型
f1 = f2 //float32类型的值不能直接赋值给float64 类型
}
布尔值
Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。
#布尔类型变量的默认值为false。
#Go 语言中不允许将整型强制转换为布尔型.
#布尔型无法参与数值运算,也无法与其他类型进行转换
package main
import "fmt"
func main() {
b1 := true
var b2 bool //默认false
fmt.Printf("%T\n",b1) //bool
fmt.Printf("%T value:%v",b2, b2) //bool value:false
}
字符串
Go 语言里的字符串的内部实现使用UTF-8编码。 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符
GO语言字符串必须以双引号包裹,单引号包裹是字符
func.main(){
//字符串
s := "helle world"
// 单独字母、汉字、符号、表示一个字符
c1 := 'h'
c2 := 'l'
c3 := '好的'
//字节 1字节8 Bit 8个二进制
//一个字符'A'=1个字节
//1个utf8编码的汉字'沙' 一般占3个字节
字符串转义字符
| 转义符 | 含义 |
\r |
回车符(返回行首) |
\n |
换行符(直接跳到下一行的同列位置) |
\t |
制表符 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
package main
import "fmt"
import "strings"
//转义符
func main() {
path := "D:\\go\\abc\\123"
fmt.Println(path)
//多行字符串
s2 := `
一行
两行
三行
`
fmt.Println(s2)
//字符串相关操作
fmt.Println(len(s2))
//字符串拼接
name := "理想"
world := "开心"
ss := name + world //第二种 变量名拼接
fmt.Println(ss)
ss1 := fmt.Sprintf("%s%s", name, world) //第一种 sprintf 拼接
fmt.Println(ss1)
//分割
ret := strings.Split(path, "\\") //[D: go abc 123]
fmt.Println(ret)
//包含
fmt.Println(strings.Contains(ss,"理性")) //false
fmt.Println(strings.Contains(ss,"理想")) //true
//前缀
fmt.Println(strings.HasPrefix(ss, "理想")) //true
//后缀
fmt.Println(strings.HasSuffix(ss, "理想")) //false
//字符串出现位置
s4 := "abcded"
fmt.Println(strings.Index(s4, "c")) //判断字符出现位置 2
fmt.Println(strings.LastIndex(s4, "d"))//b字符最后出现的位置 1
//join 操作
fmt.Println(strings.Join(ret, "+")) //D:+go+abc+123
}
字符串的常用操作
| 方法 | 介绍 |
| len(str) |
求长度 |
| +或fmt.Sprintf |
拼接字符串 |
| strings.Split |
分割 |
| strings.contains |
判断是否包含 |
| strings.HasPrefix,strings.HasSuffix |
前缀/后缀判断 |
| strings.Index(),strings.LastIndex() |
子串出现的位置 |
| strings.Join(a[]string, sep string) |
join操作 |
byte和rune类型
Go 语言的字符有以下两种:
uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
rune类型,代表一个 UTF-8字符。
#当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。
package main
import "fmt"
// byte和rune 类型
// 遍历字符串
func main() {
s := "河流hello たった今"
n := len(s) //求字符串长度,把长度保存在变量中
fmt.Println(n)
//字符串修改
s2 := "白萝卜" //[白 萝 卜]
s3 := []rune (s2) //把字符串强制转换一个rune切片
s3[0] = '红'
fmt.Println(string(s3)) //把切片强制转换成字符串
// 类型转换
n1 := 10 //int
var f float64
f = float64(n1)
fmt.Println(f)
fmt.Printf("%T", f)
}