Go单引号和双引号区别
首先做个测试,看下面那个选项是正确的:
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)
Go单引号和双引号区别的更多相关文章
- php 单引号与双引号区别
一.单引号与双引号区别 1." "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出. 2.' '单引号里面的不进行解释,直接输出. 从字面意思上就可以看出,单引号比双引 ...
- PHP笔记:单引号与双引号区别
PHP笔记:单引号与双引号区别 php中使用字符串时,可以使用单引号或者双引号,这里总结一下二者的不同: 一.解析字符内容 双引号中的变量会会经过编译器解析 单引号中的变量不会被解析 如下: < ...
- php入门单引号与双引号区别
[1]单引号和双引号在处理变量的时候做法: 括在双引号内的变量会解释出值,但是括在单引号内则不做处理,直接输出: <?php $var = 'my name is huige'; echo &q ...
- Shel脚本学习—反引号、单引号、双引号区别与联系
反引号 反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一 ...
- PHP 单引号 与双引号区别
在PHP中,字符串的定义可以使用单引号,也可以使用双引号. PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符.例如: $foo = 2 ...
- JAVA中”单引号”,“双引号”,“没有单引号和双引号”区别:
单引号引的数据 是char类型的——>单引号只能引一个字符(表示单个字符)双引号引的数据 是String类型的——>而双引号可以引0个及其以上(引用字符串) char类型的值用单引号引起来 ...
- 关于 json 单引号和双引号区别--请使用双引号
双引号才是json 的标准,单引号是不规范的(虽然在js 中是行的通的)! 由于某些原因,在将js json数据传到as 中处理的时候出现了“无效的json解析输入” ,于是查找了一下js参数是否有问 ...
- Java 单引号 与 双引号 区别
双引号,用来引用字符串, 单引号用来表示单个字符.
- Python03之单引号、双引号、三单引号、三双引号
今天在学习字符串的时候,发现字符串有时使用单引号,有时使用双引号,而有时还使用三引号.至此我整理如下: 单引号和双引号区别.三单引号和三双引号也没什么区别. 一: 两单引号之间不可以出现单引号,如果出 ...
随机推荐
- ZZNU-OJ-2119 : 告辞,【卡特兰数列,组合数学】
2119 : 告辞 时间限制:1 Sec 内存限制:256 MiB提交:428 答案正确:102 提交 状态 编辑 讨论区 题目描述 整个世界都在散发着恋爱的恶臭,只有spring依旧保持着单身贵族的 ...
- 使用math中的hypot实现向量
from math import hypot class Vector: def __init__(self,x=0,y=0): self.x = x self.y = y def __repr__( ...
- Django的ManyToManyField(多对多)中的through的作用
创建一个经典的多对多关系:一本书可以有多个作者,一个作者可以有多本书(如下) 运行“python manage.py makemigratons"和"python manage.p ...
- Ubuntu Linux虚拟机与windows快速创建共享文件夹
有时候我们需要在windows下与远程Linux服务器传输文件,之前使用pscp传输文件很方便,但不方便传输多文件,同时也不便于查看.看了网上的教程总结创建共享文件夹的流程: 1.首先在本地windo ...
- C# 加载显示ftp上图片方法
ftp://用户名:密码@IP/路径 FTP的一种登陆方式 如ftp://sing:song@192.168.1.133/upload/pic/236.jpg
- 使用sysbench对MySQL进行压力测试
1.背景 出自percona公司,是一款多线程系统压测工具,可以根据影响数据库服务器性能的各种因素来评估系统的性能.例如,可以用来测试文件IO,操作系统调度器,内存分配和传输速度,POSIX线程以及 ...
- https 非对称加密
- APIO2009 抢掠计划 Tarjan DAG-DP
APIO2009 抢掠计划 Tarjan spfa/DAG-DP 题面 一道\(Tarjan\)缩点水题.因为可以反复经过节点,所以把一个联通快中的所有路口看做一个整体,缩点后直接跑\(spfa\)或 ...
- 安装包设计-------打包(MFC)---------知识总结
目录: 1.选择文件夹 2.判断文件夹或文件是否存在 3.通过cmd命令行向程序中传递参数. 4.路径处理 5.文件夹以及文件的删除 6.复制文件 7.创建目录 8.从当前的应用程序中抽取资源 9.引 ...
- c实现循环链表
解决约瑟夫环问题核心步骤: 1.建立具有n个节点.无头的循环链表 2.确定第一个报数人的位置 3.不断从链表中删除链节点,直到链表为空 #include <iostream> #inclu ...