范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Golang入门到项目实战golang字符串

  一个Go语言字符串是一个任意字节的常量序列。[] bytego语言字符串字面量
  在Go语言中,字符串字面量使用双引号 "" 或者反引号 " 来创建。双引号用来创建可解析的字符串,支持转义,但不能用来引用多行;反引号用来创建原生的字符串字面量,可能由多行组成,但不支持转义,并且可以包含除了反引号外其他所有字符。双引号创建可解析的字符串应用最广泛,反引号用来创建原生的字符串则多用于书写多行消息,HTML以及正则表达式。
  实例package main  import "fmt"  func main() { 	var str1 string = "hello world" 	var html string = ` 		 			hello golang 		 	`  	fmt.Printf("str1: %v ", str1) 	fmt.Printf("html: %v ", html) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" str1: hello world html:  		 			hello golang 		go语言字符串连接
  使用加号
  虽然Go语言中的字符串是不可变的,但是字符串支持 + 级联操作和+=追加操作,例如:package main  import "fmt"  func main() { 	name := "tom" 	age := "20" 	msg := name + " " + age 	fmt.Printf("msg: %v ", msg) 	fmt.Println("-------------") 	msg = "" 	msg += name 	msg += " " 	msg += age 	fmt.Printf("msg: %v ", msg) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" msg: tom 20 ------------- msg: tom 20
  golang 里面的字符串都是不可变的,每次运算都会产生一个新的字符串,所以会产生很多临时的无用的字符串,不仅没有用,还会给 gc 带来额外的负担,所以性能比较差
  使用fmt.Sprintf()函数package main  import "fmt"  func main() { 	name := "tom" 	age := "20" 	msg := fmt.Sprintf("%s,%s", name, age) 	fmt.Printf("msg: %v ", msg) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" msg: tom,20
  内部使用 []byte 实现,不像直接运算符这种会产生很多临时的字符串,但是内部的逻辑比较复杂,有很多额外的判断,还用到了 interface,所以性能也不是很好
  strings.Join()package main  import ( 	"fmt" 	"strings" )  func main() { 	name := "tom" 	age := "20" 	msg := strings.Join([]string{name, age}, ",") 	fmt.Printf("msg: %v ", msg) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" msg: tom,20
  join会先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,但是本来没有,去构造这个数据的代价也不小
  buffer.WriteString()package main  import ( 	"bytes" 	"fmt" )  func main() { 	var buffer bytes.Buffer 	buffer.WriteString("tom") 	buffer.WriteString(",") 	buffer.WriteString("20") 	fmt.Printf("buffer.String(): %v ", buffer.String()) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" buffer.String(): tom,20
  这个比较理想,可以当成可变字符使用,对内存的增长也有优化,如果能预估字符串的长度,还可以用 buffer.Grow() 接口来设置 capacitygo语言字符串转义字符
  Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。
  转义符
  含义
  r
  回车符(返回行首)
  换行符(直接跳到下一行的同列位置)
  制表符
  "
  单引号
  "
  双引号
  反斜杠
  实例package main  import ( 	"fmt" )  func main() { 	fmt.Print("hello	world ") 	fmt.Print(""c:test"") }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" hello	world "c:	est"go语言字符串切片操作package main  import ( 	"fmt" )  func main() { 	str := "hello world" 	n := 3 	m := 5 	fmt.Println(str[n])   //获取字符串索引位置为n的原始字节 	fmt.Println(str[n:m]) //截取得字符串索引位置为 n 到 m-1 的字符串 	fmt.Println(str[n:])  //截取得字符串索引位置为 n 到 len(s)-1 的字符串 	fmt.Println(str[:m])  //截取得字符串索引位置为 0 到 m-1 的字符串 }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" 108 lo lo world hellogo语言字符串常用方法
  方法
  介绍
  len(str)
  求长度
  +或fmt.Sprintf
  拼接字符串
  strings.Split
  分割
  strings.contains
  判断是否包含
  strings.HasPrefix,strings.HasSuffix
  前缀/后缀判断
  strings.Index(),strings.LastIndex()
  子串出现的位置
  strings.Join(a[]string, sep string)
  join操作
  实例package main  import ( 	"fmt" 	"strings" )  func main() { 	s := "hello world!" 	fmt.Printf("len(s): %v ", len(s)) 	fmt.Printf("strings.Split(s, " "): %v ", strings.Split(s, " ")) 	fmt.Printf("strings.Contains(s, "hello"): %v ", strings.Contains(s, "hello")) 	fmt.Printf("strings.HasPrefix(s, "hello"): %v ", strings.HasPrefix(s, "hello")) 	fmt.Printf("strings.HasSuffix(s, "world!"): %v ", strings.HasSuffix(s, "world!")) 	fmt.Printf("strings.Index(s, "l"): %v ", strings.Index(s, "l")) 	fmt.Printf("strings.LastIndex(s, "l"): %v ", strings.LastIndex(s, "l")) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" len(s): 14 strings.Split(s, " "): [hello world!] strings.Contains(s, "hello"): true strings.HasPrefix(s, "hello"): true strings.HasSuffix(s, "world!"): true strings.Index(s, "l"): 2 strings.LastIndex(s, "l"): 9byte和rune类型
  组成每个字符串的元素叫做"字符",可以通过遍历或者单个获取字符串元素获得字符。 字符用单引号(’)包裹起来,如:package main  import "fmt"  func main() { 	var a = "华" 	var b = "a" 	fmt.Printf("a: %v,%c ", a, a) 	fmt.Printf("b: %v,%c ", b, b) }
  运行结果[Running] go run "/Users/guoliang/Desktop/test.go" a: 21326,华 b: 97,a
  Go 语言的字符有以下两种:uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。rune类型,代表一个 UTF-8字符。
  当需要处理中文、日文或者其他复合字符时,则需要用到rune类型。rune类型实际是一个int32。
  Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte 型进行默认字符串处理,性能和扩展性都有照顾。

专业修图利器,反向供电笔记本好帮手,明基PD2705U27寸4K显示器新年新设备,刚刚过完年不少朋友都开始更换自己的设备了,给2022年一个好的开端,我一个做设计的朋友让我推荐一款显示器,要求可以应对专业修图要求,最好可以给他的MacBook反向供电俄罗斯只能制造65nm芯片,落后起码15年来源内容来自半导体行业观察(IDicbank)综合,谢谢。台积电及三星断供俄罗斯高阶芯片后,俄国先进武器国防航空航天和海事行业及AI使用的半导体芯片都被砍了,中国可以帮忙普廷?经济这个人,砍了拼多多一刀拼多多的砍一刀,到底是几刀?1hr砍一刀翻车了拼多多的砍一刀,又一次经历了现实的考验。围绕着拼多多到底要砍多少刀这个世纪谜题,一个百万粉丝的游戏博主,做了一个大胆的实验在数万名观众第四次工业革命浪潮来袭,数字经济成为战略新高地1hr三次飞跃公元1453年,对整个人类历史来说都是一个转折点。那一年,欧亚大陆分界线上,发生了一次惨烈的战役。土耳其苏丹穆罕默德二世带领着10万军队和320艘战舰,从海陆两面包围微软承认被黑客入侵源代码泄露不会导致风险上升财联社(上海,编辑夏军雄)讯,当地时间周二晚间(3月22日),微软公司证实,黑客组织Lapsus获得了该公司系统的有限访问权限。此前,Lapsus声称成功入侵了微软的系统,并获得了华为能不能在俄罗斯设子公司生产麒麟芯片?虽然俄罗斯可以不受美专利限制,可是几大问题是解决不了的一是俄罗斯没有能够生产先进设备的光刻设备,俄罗斯国内本来就没有先进的光刻设备,现在无法进口,俄国内有的部分设备还面临着远程锁机iPhone14被进一步确认,库克刀法精准,苹果老用户收获喜讯行业发展速度快是一件好事,但与此同时也有负面作用,那就是产品淘汰的速度也会被加快,例如手机行业就是一个典型的例子,在快速发展的手机行业中,可能消费者购买一款手机还不到一年就会被新发为什么现在还流行128GB手机?懂行人告诉你,选择内存不再纠结前几天有朋友问我,想买个手机,128GB的还是256GB的,在网上差了很多,有的说够用,有的说不够用,其实这个问题很好解决,因人而异,我给朋友推荐的还是128GB,为什么呢?首先我从2499元跌至1659元,5000mAh65W骁龙870,还买RedmiK40S吗?不好卖的手机各有各的缺点,而好卖的手机却可以是相通的,在手机行业中,如果有一款手机卖得好,手机厂商们很有可能会推出一款类似的机型来继续走量,因为这种机型被市场检验过确实受欢迎,例如苹果飘了?库克不喜欢就去用安卓本文原创,禁止抄袭,违者必究!有人说,世界上只有两种手机,一种是苹果,另一种是安卓,甚至于有人为了前者,愿意割肾。虽然这只是一句玩笑话,但是在8年前真的有一位17岁少年割肾换机。彼科技新锐这是两个世界。走进计算机学院,蹇松雷把随身携带的笔记本电脑放在桌上,展开手掌,笑意盈盈地向记者介绍道,我在做的,就是把物理世界的数据翻译给计算机,让人工智能世界转动起来。蹇松雷口中
解读红米realmeiqoo三个以性价比为主的手机哪个最适合你?今天我们就来聊聊三个以性价比为主的三个子品牌的手机redmirealmeiqoo。redmi红米手机小米手机的子品牌,主要以极致性价比著称,系统和小米用的一样miui系统,miui周杰伦推荐的耳机,非常适合学生党,国潮万魔耳机绝对适合你马上就要开学了,对于刚走进大学校门的新同学来说,要准备一款属于自己的无线蓝牙耳机,还真是非常有必要,毕竟不管是在学习中,还是在生活中,都要使用到,特别是在宿舍里面,一款好的耳机可以小米人体传感器39。5元到手,智能家居必备家里有打算做智能家居的小伙伴,必然少不了一个人体传感器,米家作为接入家电最多的智能家居生态,也是用户群体最大的生态,是比较值得推荐的。比如这米家人体传感器,可感知人体移动及明暗变化AI按摩师来了!能测肌肉硬度计算经络穴位,传统中医正被人工智能化几千年来,中国和东南亚地区都在广泛使用传统的中医来治疗疾病和调理健康。从针灸到草药疗法,随着时间的推移不断发展。现在,创新者正在给它赋予更高的科技内涵人工智能(AI)技术。由新加坡20212022学年面向中小学生的全国性竞赛活动名单公布中新网9月7日电据教育部网站消息,近日,教育部办公厅发布通知,确定第五届全国青少年人工智能创新挑战赛等36项竞赛活动为20212022学年面向中小学生的全国性竞赛活动,举办时间原则助听器对耳聋患者有哪些好处?助听器可以帮助听损患者听到更多声音,听得更加清楚,提高生活品质,保护残余听力,保护言语分辨率下降缓慢,希望我的回答对您有所帮助。助听器作为一个声音放大装置,能有效地放大外界的声音。听损患者如何改善聆听环境?你好,你的问题是听损患者如何改善聆听环境?首先在无法治疗的情况下需要佩戴助听器帮助聆听,尽量不要去太吵杂的环境,说话时尽量站在与话者正对面,并且背对吵杂声。多听多说多练才能有提升。奔驰EQE领衔4款纯电车型亮相慕尼黑车展康林松豪华车应在电动化转型中发挥引领作用每经记者李硕每经编辑孙磊由电动为先向全面电动加速转型的奔驰,开始集中展现自身在新能源领域的雄厚实力。9月6日,在慕尼黑举办的2021德国国际汽车及智慧出行博览会(IAAMobili台湾有什么著名的大公司吗?放在全国,还是放在全球台湾省的经济实力并不俗。虽然台湾土地面积不大,人口不多,但由于经济发展起步较早(比大陆地区早了20年左右),因此经济发展水平已经很高了,进入了高收入行列。20为什么感觉中国卫星多在太原和酒泉发射?酒泉卫星发射中心的场地不在甘肃,而是在内蒙古。太原卫星发射中心的场地不在太原,而是在忻州。都误会了。这些位置啥的,重要性啥的,少讨论,大多涉密,中国人要有国家安全意识现在我国建成了为什么满街的手机店感觉基本没什么生意却还没有倒闭?本人是经营一家手机店的,具体谈谈为什么没有多少生意在撑着。一我们店在这个镇上辅街上,位置不佳,房租便宜。然后店里就我和我老婆两个人,就是传说中的夫妻店,人员成本低。二现在每天进店的