Go语言学习笔记四--基本数据类型与string类型常用方法
一、基本数据类型之整数浮点数
package main import "fmt" func main() { var a = 10 var b int16 = 20 fmt.Println(a, b) b = int16(a) fmt.Println(b) c := 3.14 fmt.Println(c) var d float32 = 12.6 fmt.Println(d) fmt.Println(c + float64(d)) }
二、string字符串类型的使用
1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 ) 7 8 func main() { 9 var s1 = "hello" 10 fmt.Println(s1) 11 12 s2 := " world" 13 fmt.Println(s2) 14 15 var s3 = s1 + s2 //字符串拼接 16 fmt.Println(s3) 17 18 var s4 = "ABCD\nefgh"//遇到特殊字符特殊处理 19 fmt.Println(s4) 20 21 var s5 = `1234\n5678` //反引号会将括号内所有字符打印出来,包括任何特殊字符 22 fmt.Println(s5) 23 24 var l6 = len(s4) 25 fmt.Println(l6) 26 27 var s6 = fmt.Sprintf("%s--%s--%s",s1,s2,s3)//字符串格式化拼接方式 28 println(s6) 29 30 ipAddr := "192.168.0.119;39.105.45.77" 31 32 ipArray := strings.Split(ipAddr,";")//字符串分割 以分号作为分割 33 34 fmt.Printf("The first ip:%s\n",ipArray[0]) 35 fmt.Printf("The second ip:%s\n",ipArray[1]) 36 37 result := strings.Contains(ipAddr,"39.105.45.77")//查看是否包含子串 38 fmt.Println(result) 39 40 str := "http://baidua.com" 41 if strings.HasPrefix(str,"http") { 42 println("This is a http url") 43 } else { 44 println("This isn't http url") 45 } 46 47 if strings.HasSuffix(str,"baidu.com") { 48 println("this is a baidu url") 49 } else { 50 println("this isn't baidu url") 51 } 52 53 index := strings.Index(str,"baidu") 54 println(index) 55 56 index = strings.LastIndex(str,"a") 57 println(index) 58 59 strIpArray := strings.Join(ipArray,"----") 60 println(strIpArray) 61 62 //字符串底层就是一个byte数组 63 s7 := "ABCDEF" 64 fmt.Printf("s7[0] = %c\n",s7[0]) 65 66 //很明显这个range返回值是两个 前面表示数组的下标 后面表示当前下标的值 67 for index, ch := range s7{ 68 fmt.Printf("s7[%d] = %c\n",index, ch) 69 } 70 //如果就一个返回值的话那就是返回数组的下标 71 for ch := range s7 { 72 fmt.Println(ch) 73 } 74 75 //字符串是没办法通过下标进行修改的 因此我们要将字符串转成byte数组 76 var byteSplit []byte 77 byteSplit = []byte(s7) 78 for i := 0; i < len(byteSplit); i++ { 79 fmt.Printf("%c ", byteSplit[i]) 80 } 81 println() 82 83 //修改数组元素然后转成字符串即可完成修改字符串 84 byteSplit[0] = 'M' 85 s7 = string(byteSplit) 86 println(s7) 87 88 //由于字符串的底层原理是byte 所以在求字符串长度的时候,求出来的是byte的长度 89 s8 := "小尾学长" 90 fmt.Printf("s8 len = %d\n", len(s8)) //长度是12 因为每个中文占三个字节 91 92 //在go里面表示一个utf8的字符使用的是rune 93 var c1 rune= '中' 94 fmt.Printf("c1 = %c\n",c1) 95 96 var runeSplit []rune 97 runeSplit = []rune(s8) 98 fmt.Printf(" %c\n %c\n %c\n %c\n",runeSplit[0],runeSplit[1],runeSplit[2],runeSplit[3] ) 99 fmt.Printf("runeSplit len is %d \n",len(runeSplit))//长度是4 100 runeSplit[3] = '姐' 101 s8 = string(runeSplit) 102 println(s8)//变成小尾学姐啦... 103 104 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!