javer转go入门笔记-字符串

摘要

本文介绍了Go语言中字符串的特点,与java中的string进行了对比,最后介绍了Go中String与其他基本类型常用的相互转换方式。

1、go字符串概述
定义

字符串string在go中同样被定义为基本数据类型,类型关键字为string,其本质就是一个不能修改的字符数组。其常用定义方式有两种:

var str string = "hello"
str := "hello"
本质

go语言中string类型的本质与一个指向字符数组的切片类似,该类型大小固定为16个字节,其中8个字节表示一个指向字符数组的指针,另外8个字节表示字符串长度。可以验证如下:

var str1 string = "hello"
    fmt.Printf("str1的类型是%T,\"%s\"变量本身占用%d个字节,字符串长度为%d\n", str1, str1, unsafe.Sizeof(str1), len(str1))
    str2 := "hello撒大"
    fmt.Printf("str2的类型是%T,\"%s\"变量本身占用%d个字节,字符串长度为%d\n", str2, str2, unsafe.Sizeof(str2), len(str2))

******结果*******
str1的类型是string,"hello"变量本身占用16个字节,字符串长度为5 
str2的类型是string,"hello撒大"变量本身占用16个字节,字符串长度为11

2、与java的String异同之处
不同之处
  • 1、java中String是对象,而go中string是基本数据类型
  • 2、java中String对象不能通过数组方式直接索引每个字符,但golang可以,如:
str := "123"
fmt.Println(str[1])

*****输出*****
50  //go中字符byte默认通过无符号整形输出
相似之处
  • java和go中的字符串都是满足不可变特性的
    • java的不可变性体现在:用户不能通过对象引用直接修改对象本身,而通过jdk提供的方法如subString()等会返回新的对象,不会修改到对象本身。
    • go的不可变性体现在:其不允许用户通过数组索引方式修改其指向的字符串数组,从而保证不可变性。
3、使用的注意事项
  • 1、go中字符串类似于切片,因此也可以通过其衍生出更多的切片,但所有切片都不能修改字符数组,如案例ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值