1.string(字符串)
Go中的字符串是一个字节的切片。可以通过将其内容封装在“”中来创建字符串。Go中的字符串是Unicode兼容的,并且是UTF-8编码的。
1.1 基本使用
func StringTest() { str1 := "Hello" //声明方式1 str2 := string("World") //声明方式2 fmt.Println(str1) fmt.Println(str2) } 复制代码
运行:
网络异常,图片无法展示
|
1.2 strings包中操作string的函数
func StringTest() { str1 := "Hello" str2 := string("World") /** strings的常见函数 */ index := strings.Index(str1, "e") //查找“e”在str1中的位置 contains := strings.Compare(str1, str2) //Compare返回一个按字典顺序比较两个字符串的整数。 如果a==b,则结果为0,如果a < b则为-1,如果a > b则为+1。 fold := strings.EqualFold(str1, str2) //类似于Java里的equals() contain := strings.Contains(str1, "llo") //查找“llo”是否在str1中 fmt.Println(index) fmt.Println(contains) fmt.Println(fold) fmt.Println(contain) } 复制代码
运行结果:
网络异常,图片无法展示
|
1.3 strconv包中与string相关函数
访问strconv包,可以实现string和其他数值类型之间的转换。
func StrconvTest() { /** 参数1 数字的字符串形式 参数2 数字字符串的进制 比如二进制 八进制 十进制 十六进制 参数3 返回结果的bit大小 也就是int8 int16 int32 int64 */ parseInt, err := strconv.ParseInt("456", 16, 32) if err == nil { fmt.Println(parseInt) } /** 参数1 数字的字符串形式 (相当于调用了ParseInt(s, 10, 0)) */ atoi, err := strconv.Atoi("123") if err == nil { fmt.Println(atoi) } /** 参数1 放入true或false */ parseBool, err := strconv.ParseBool("false") if err == nil { fmt.Println(parseBool) } } 复制代码
运行结果:
网络异常,图片无法展示
|
2.slice(切片)
Go 语言切片是对数组的抽象。
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片(“动态数组”),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
切片是一种方便、灵活且强大的包装器。切片本身没有任何数据。它们只是对现有数组的引用。
切片与数组相比,不需要设定长度,在[]中不用设定值,相对来说比较自由
从概念上面来说slice像一个结构体,这个结构体包含了三个元素:
- 指针,指向数组中slice指定的开始位置
- 长度,即slice的长度
- 最大长度,也就是slice开始位置到数组的最后位置的长度
2.1 定义
//声明方式一 var ints1 []int //声明方式二 ints2 := make([]int, 0) 复制代码
2.2 常见操作
func SliceTest() { //声明方式一 var ints1 []int //声明方式二 ints2 := make([]int, 0) //添加元素 ints1 = append(ints1, 2, 2, 3, 4, 5, 8) ints2 = append(ints2, 9, 4, 2, 3, 5, 6) //根据下标查找元素 i := ints1[2] fmt.Println(i) //遍历 for i := 0; i < len(ints2); i++ { fmt.Print(ints2[i], " ") } fmt.Println() //删除元素 fmt.Println(ints1) ints1 = append(ints1[:1], ints1[2:]...) fmt.Println(ints1) } 复制代码
运行结果:
网络异常,图片无法展示
|
2.3 常见函数
len() :获取长度
cap() :测量切片最长可以达到多少
append() :向slice里面追加一个或者多个元素,然后返回一个和slice一样类型的slice
copy():copy从源slice的src中复制元素到目标dst,并且返回复制的元素的个数
3.map(字典)
map是Go中的内置类型,它将一个值与一个键关联起来。可以使用相应的键检索值
3.1 定义
/* 声明变量,默认 map 是 nil */ var map_variable(Map名称) map[key_data_type(键类型)]value_data_type(值类型) /* 使用 make 函数创建 */ map_variable = make(map[key_data_type]value_data_type) rating := map[string]float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 } //如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对 复制代码
3.2 常见操作
func MapTest() { var m1 map[string]string /*创建集合 */ m1 = make(map[string]string) /* map插入key - value对,各个国家对应的首都 */ m1["France"] = "巴黎" m1["Italy"] = "罗马" m1["Japan"] = "东京" m1["India "] = "新德里" /*使用键输出地图值 */ for country := range m1 { fmt.Println(country, "首都是", m1[country]) } /*查看元素在集合中是否存在 */ capital, ok := m1["American"] /*如果确定是真实的,则存在,否则不存在 */ fmt.Println(capital) fmt.Println(ok) if ok { fmt.Println("American 的首都是", capital) } else { fmt.Println("American 的首都不存在") } } 复制代码
运行结果:
网络异常,图片无法展示
|
3.3 常见函数
delete(map, key) 函数:用于删除集合的元素, 参数为 map 和其对应的 key。删除函数不返回任何值
先到这里就ok啦,因为博主也是go语言初学者,高深的东西以后再分享吧!