写点什么

GO 学习之路 -4.String 和 Slice,Map

作者:子不语Any
  • 2022-11-30
    湖南
  • 本文字数:1628 字

    阅读完需:约 5 分钟

GO学习之路-4.String和Slice,Map

前言

本文继续学习 GO 语言基础知识点。

本文大纲

1、字符串 String

String是 Go 语言的基本类型,在初始化后不能修改,Go 字符串是一串固定长度的字符连接起来的字符序列,当然它也是一个字节的切片(Slice)。



import ("fmt")
func main() { name := "Hello World" //声明一个值为 Hello World的字符串变量 name fmt.Println(name)}
复制代码


String 常用操作:获取长度和遍历


1、获取字符串长度:len()函数


str1 := "hello world"fmt.Println(len(str1)) // 11
复制代码


2、字符串遍历方式 1:


str := "hello"for i := 0; i < len(str); i++ {  fmt.Println(i,str[i])}
复制代码


3、字符串遍历方式 2:


str := "hello"for i,ch := range str {  fmt.Println(i,ch)}
复制代码


4、使用函数 string()将其他类型转换为字符串


num := 12fmt.Printf("%T \n", string(num)      // "12"  string
复制代码


5、字符串拼接


str1 := "hello "str2 := " world"
//创建字节缓冲var stringBuilder strings.Builder
//把字符串写入缓冲stringBuilder.WriteString(str1)stringBuilder.WriteString(str2)
//将缓冲以字符串形式输出fmt.Println(stringBuilder.String())
复制代码


字符串的 strings 包


//查找s在字符串str中的索引Index(str, s string) int 
//判断str是否包含sContains(str, s string) bool
//通过字符串str连接切片 sJoin(s []string, str string) string
//替换字符串str中old字符串为new字符串,n表示替换的次数,小于0全部替换Replace(str,old,new string,n int) string
复制代码


字符串的 strconv 包:用于与基本类型之间的转换,常用函数有 Append、Format、Parse


  • Append 系列函数将整数等转换为字符串后,添加到现有的字节数组中

  • Format 系列函数把其他类型的转换为字符串

  • Parse 系列函数把字符串转换为其他类型

2、切片 Slice

切片(slice)的作用是解决 GO 数组长度不能扩展的问题。是一种方便、灵活且强大的包装器。它本身没有任何数据,只是对现有数组的引用。


切片定义


var identifier []type
复制代码


切片不需要说明长度,或使用 make()函数来创建切片:


var slice1 []type = make([]type, len)也可以简写为slice1 := make([]type, len)
复制代码


示例


func main() {   /* 创建切片 */   numbers := []int{0,1,2,3,4,5,6,7,8}      printSlice(numbers)
/* 打印原始切片 */ fmt.Println("numbers ==", numbers)
/* 打印子切片从索引1(包含) 到索引4(不包含)*/ fmt.Println("numbers[1:4] ==", numbers[1:4])
/* 默认下限为 0*/ fmt.Println("numbers[:3] ==", numbers[:3])}
func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)}
打印结果:len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]numbers == [0 1 2 3 4 5 6 7 8]numbers[1:4] == [1 2 3]numbers[:3] == [0 1 2]
复制代码

3、集合 Map

Map 是 Go 语言的内置类型,将一个值与一个键关联起来,是一种无序的键值对的集合,可以使用相应的键检索值(类比 Java 中的 Map 来记)。


// 声明一个map类型,[]内的类型指任意可以进行比较的类型 int指值类型m := map[string]int{"a":1,"b":2}fmt.Print(m["a"])
复制代码


示例:


func main() {   var countryCapitalMap map[string]string   /* 创建集合 */   countryCapitalMap = make(map[string]string)      /* map 插入 key-value 对,各个国家对应的首都 */   countryCapitalMap["France"] = "Paris"   countryCapitalMap["Italy"] = "Rome"   countryCapitalMap["Japan"] = "Tokyo"   countryCapitalMap["India"] = "New Delhi"      /* 使用 key 输出 map 值 */   for country := range countryCapitalMap {      fmt.Println("Capital of",country,"is",countryCapitalMap[country])   }      运行结果:   Capital of France is Paris   Capital of Italy is Rome   Capital of Japan is Tokyo   Capital of India is New Delhi
复制代码


掘金(juejin.cn)  一起分享知识,Keep Learning!


本文正在参加技术专题18期-聊聊Go语言框架

发布于: 刚刚阅读数: 2
用户头像

子不语Any

关注

If not now,when? 2022-09-17 加入

安卓攻城狮

评论

发布
暂无评论
GO学习之路-4.String和Slice,Map_Go_子不语Any_InfoQ写作社区