前言

go中的单引号',双引号",反引号`,他们用法的区别。

需要先了解字符编码的区别,由来。

单引号

单引号里面只能有一个字符,一般只能用来包裹一个字节的ASCII码字符。他的类型是Golang的一个特殊类型:rune,也就是int32。例如

package main

import "fmt"

func main() {
s := 'A'
fmt.Printf("type : %T, value: %s\n", s, s)
fmt.Printf("type : %T, value: %d\n", s, s)
fmt.Printf("type : %T, value: %c\n", s, s)
} /*
输出:
type : int32, value: %!s(int32=65)
type : int32, value: 65
type : int32, value: A
*/

双引号

package main

import (
"fmt"
) func main() {
s := "你Hello"
fmt.Printf("type : %T, value: %s\n", s, s)
fmt.Printf("type : %T, value: %d\n", s[0], s[0])
fmt.Printf("type : %T, value: %c\n", s[0], s[0])
u_s := []rune(s)
fmt.Printf("type : %T, value: %s\n", u_s[0], u_s[0])
fmt.Printf("type : %T, value: %d\n", u_s[0], u_s[0])
fmt.Printf("type : %T, value: %c\n", u_s[0], u_s[0])
}
/*
输出:
type : string, value: 你Hello
type : uint8, value: 228
type : uint8, value: ä
type : int32, value: %!s(int32=20320)
type : int32, value: 20320
type : int32, value: 你
*/

可以看到string类型,我们单独拿一个字符出来是unit8类型也就是byte类型,与上面的单引号int32是不同的。Go中字符串是一个不可变的值类型,内部用指针指向UTF-8编码的字节数组。显然中文不可能由一个字节组成,我们将他转换成int32位之后就可以输出了。

反引号

反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),相当于一个可以换行的字符串。一般用于SQL语句,html等大段内容,以及正则表达式的使用。

package main

import (
"fmt"
) func main() {
s := `Hello 123
你好`
fmt.Printf("len : %d\n", len(s))
fmt.Printf("type : %T, value: %s\n", s, s)
fmt.Printf("type : %T, value: %d\n", s[0], s[0])
}
/*
输出:
len : 20
type : string, value: Hello 123
你好
type : uint8, value: 72
*/

显然这种uint8格式的话,中文不能直接切片输出。

golang 中的引号的更多相关文章

  1. 基础知识 - Golang 中的正则表达式

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  2. Go_14:GoLang中 json、map、struct 之间的相互转化

    1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...

  3. GoLang中 json、map、struct 之间的相互转化

    1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...

  4. Golang中的RegExp正则表达式用法指南

    ------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...

  5. include包含头文件的语句中,双引号和尖括号的区别是什么?

    include包含头文件的语句中,双引号和尖括号的区别是什么?  #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...

  6. golang中的race检测

    golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ...

  7. ASP中双引号单引号和&连接符使用技巧

    ASP中双引号单引号和&连接符使用技巧 一.ASP中处在双引号中的可以是任意的字符.字符串,HTML代码 1.<%response.write ("I am here" ...

  8. golang中的reflect包用法

    最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生 ...

  9. Python中的引号用法总结

    Python中的引号: 1.表示多行注释--一对三个单引号或双引号表示多行注释 #-*-coding :utf-8-*- #防止乱码,方便在程序中添加中文,把编码统一成UTF-8 from selen ...

随机推荐

  1. C语言 exit

    C语言 exit 在main函数中调用exit和return结果是一样的,但在子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止. 案例 #include <st ...

  2. 远程控制服务:配置sshd服务,密钥验证登陆

    配置sshd服务 1.概述: SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来 ...

  3. laravel Excel导入导出

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该 ...

  4. 【ES6新增语法详述】

    目录 1. 变量的定义 let const 2. 模版字符串 3. 数据解构 4. 函数扩展 设置默认值 箭头函数 5. 类的定义 class 6. 对象的单体模式 "@ ES6新增了关于变 ...

  5. php将数据写入另外一个文件

    有时候,为了验证PHP的运行过程或者了解代码中的变量的使用情况,需要将变量写到另外一个文件中,方便我们查看.最近也是经常用到file_put_contents这个函数,因为只是试验用,暂时还不需要考虑 ...

  6. docker安装后启动报错

    docker安装后启动不起来: 查看日志  /var/log/message    其中有一行为:  Your kernel does not support cgroup memory limit ...

  7. 吴裕雄 python 人工智能——智能医疗系统后台用户复诊模块简约版代码展示

    #复诊 import sys import os import time import operator import cx_Oracle import numpy as np import pand ...

  8. Oracle中trunc()函数用法

    SQL表达式 注释 SELECT SYSDATE FROM dual --当前系统时间,24小时制 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FR ...

  9. 洛谷 P1464 Function(简单记忆化)

    嗯... 让一切从水开始吧... 水过初赛,但愿复赛能够接着水过... 这道题不记忆化会tle,所以用空间换时间,将每次的答案(只有20*20*20个)存下来,如果之前已经求过,就不需要重复求了... ...

  10. docker学习及应用

    一.docker发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+Docker,这两年docke ...