首先做个测试,看下面那个选项是正确的:

A. str:='abc'+'123'
B. str:="abc"+"123"
C. str:='123'+"abc"
D. str:=`123`+`abc`
E. str:=`123`+'abc'
F. str:=`123`+"abc"
1
2
3
4
5
6
正确答案为BDF,为什么是这样呢?这就是Go的特别之处。其他语言,例如JavaScript,单引号和双引号可以同时使用,都可以用来表示字符串。Java中单引号表示char类型,双引号表示string类型。而在Go中,双引号是用来表示字符串string,其实质是一个byte类型的数组,单引号表示rune类型。还有一个反引号,用来创建原生的字符串字面量,它可以由多行组成,但不支持任何转义序列。因此,当把两个不同类型的变量进行拼接时,就会报错。

字符串
Go中字符串是一个不可变的值类型,内部用指针指向UTF-8字节数组。因此可以用索引号访问某字节,也可以用len()函数来获取字符串所占的字节长度。例如:

str:="hello world"
fmt.Println(str[3:5])
1
2
这时的输出结果为“lo”,但如果将打印的内容改为“str[3]”,则会输出108。为什么会出现这种结果,可以查看go字符串的遍历输出。
在文章开始的测试例子中,还用到了字符串拼接符+。在实际使用时还需要注意,当拼接的字符串位于不同行时,拼接符需要放在上一行的末尾,这是因为编译器会进行行尾自动补全分号的缘故。例如:

str:="hello"+
"world"
1
2
Go标准包也提供了函数来实现这一功能,strings.Join()。

str1:=[]string{"hello","world"}
str:=strings.Join(str1,",")
fmt.Println(str)

最新文章

  1. Discovering-论文
  2. hibernate的环境配置
  3. 关于FluentNhibernate数据库连接配置,请教
  4. 【USACO 1.5】Prime Palindromes
  5. System.Data.OracleClient.OracleConnection已过时
  6. jquery ajax post, get, javascript ajax post, get 处理
  7. css常用伪类记录
  8. 软件缺陷分析方法:ODC
  9. LeetCode OJ 108. Convert Sorted Array to Binary Search Tree
  10. php复习整理1--位运算符
  11. K3日志定时备份
  12. Java中如何创建一个新的对象的/Creating Objects/
  13. $.each遍历实现延时
  14. webpack学习笔记--配置总结
  15. 涂抹mysql笔记-mysql数据库文件结构
  16. 力扣(LeetCode)412. Fizz Buzz
  17. php 求余
  18. Scala 方法与函数
  19. ios发布
  20. Structs配置文件 zg项目介绍

热门文章

  1. python中的几种数据类型(一)
  2. Eclipse使用技巧小结
  3. mapbox-gl空间分析插件turf.js使用介绍
  4. CentOS:去掉警报声音
  5. Docker搭建Redis一主两从三哨兵
  6. Linux之文件通信
  7. 数据结构实验之栈与队列二:一般算术表达式转换成后缀式(SDUT 2132)
  8. 页面的beforeunload和unload的事件应用
  9. Docker实践--搭建Yapi测试平台
  10. docker安装Tomcat并部署war项目