8 Go 字符类型和字符串类型
Go字符类型
1 字符类型可用byte和rune存储,英文等一字节字符存到byte中,中文等三字节字符存到rune中
2 字符类型是可以像整型一样计算的
3 字符类型可以表达转义符
1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func main() { 8 // Go语言字符串类型 9 var b1 byte = 'A' 10 fmt.Println("b1=", b1) // b1= 65 11 fmt.Printf("b1是字符 %c", b1) // b1是字符 A 12 fmt.Println("") 13 14 // var r1 byte = '国' // .\string.go:13:16: cannot use '国' (untyped rune constant 22269) as byte value in variable declaration (overflows) 15 var r1 rune = '国' 16 fmt.Println("r1=", r1) // r1= 22269 17 fmt.Printf("r1是字符 %c", r1) // r1是字符 国 18 fmt.Println("") 19 20 // var i1 int16 = 8888 21 // var i2 int8 = int8(i1) 22 // fmt.Println(i2) 23 // fmt.Println("") 24 25 // 字符类型是可以计算的 26 fmt.Println("字符类型是可以计算的") 27 var r2 rune = '七' 28 fmt.Println(r2) // 19971 29 fmt.Println("r2+7=", r2 + 7) // r2+7= 19978 30 fmt.Println("") 31 32 // 字符类型可以使用转义符 33 fmt.Println("字符类型可以使用转义符,值也是对应ASCII值") 34 var b2 byte = '\n' 35 var b3 byte = '\r' 36 var b4 byte = '\'' 37 var b5 byte = '\t' 38 fmt.Println("b2=", b2) // b2= 10 39 fmt.Println("b3=", b3) // b3= 13 40 fmt.Println("b4=", b4) // b4= 39 41 fmt.Println("b5=", b5) // b5= 9 42 fmt.Println("") 43 44 }
Go字符串类型
1 Go语言的字符串是一串固定长度的字符连接起来字符序列;
Go的字符串是由单个字节连接起来的;
Go语言字符串的字节使用URF-8的unicode文本
var s2 = "字符串" fmt.Println("s2=", s2) // s2= 字符串 fmt.Println(s2[0]) // 229 fmt.Println(s2[1]) // 173 fmt.Println(s2[2]) // 151 fmt.Println(s2[3]) // 231 fmt.Println(s2[4]) // 172 fmt.Println(s2[5]) // 166 fmt.Println(s2[6]) // 228 fmt.Println(s2[7]) // 184 fmt.Println(s2[8]) // 178 // fmt.Println(s2[9]) // panic: runtime error: index out of range [9] with length 9
2 Go语言字符串一旦被赋值,就不可再更改
var s6 = "ABC" s6[0] = 'D' // cannot assign to s6[0] (value of type byte)
3 Go字符串有两种表达方式,双引号和反引号
1) 双引号,能识别转义符
2)反引号,以字符串的源生形式输出,包括换行和特殊字符。可以实现防止攻击、输出源码等功能
var s3 string = "我能用\n换行符" fmt.Println(s3) var s4 string = ` var s string = "我是反引号内的内容,能直接输出源码" fmt.Println(s) ` fmt.Println(s4)
4 Go字符串拼接使用“+”号
var str = "我是前半句 " + " 我是后半句" fmt.Println(str) // 我是前半句 我是后半句
5 当拼接字符串很长时,可如下处理避免单行过长,将 + 号放在行末
PS: 如果行末不以 + 号结尾,则编译器会自动在行末加上结束分号;,导致编译报错
var str1 = "奥斯卡劳动法拉风" + "asdjfailsdjf" + "阿斯加德反馈拉丝机砥砺奋进" + "暗示的交罚款来的简历开局了" + "SDK零封就阿斯拉达弗利萨记反了" + "askldfuasj" + "sdkfuasdfjs" fmt.Println(str1)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验