golang 中的引号
前言
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 中的引号的更多相关文章
- 基础知识 - Golang 中的正则表达式
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- Go_14:GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- Golang中的RegExp正则表达式用法指南
------------------------------------------------------------ Golang中的正则表达式 ------------------------- ...
- include包含头文件的语句中,双引号和尖括号的区别是什么?
include包含头文件的语句中,双引号和尖括号的区别是什么? #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...
- golang中的race检测
golang中的race检测 由于golang中的go是非常方便的,加上函数又非常容易隐藏go. 所以很多时候,当我们写出一个程序的时候,我们并不知道这个程序在并发情况下会不会出现什么问题. 所以在本 ...
- ASP中双引号单引号和&连接符使用技巧
ASP中双引号单引号和&连接符使用技巧 一.ASP中处在双引号中的可以是任意的字符.字符串,HTML代码 1.<%response.write ("I am here" ...
- golang中的reflect包用法
最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生 ...
- Python中的引号用法总结
Python中的引号: 1.表示多行注释--一对三个单引号或双引号表示多行注释 #-*-coding :utf-8-*- #防止乱码,方便在程序中添加中文,把编码统一成UTF-8 from selen ...
随机推荐
- WLC-Virtual Interface IP
关于思科WLC,有很多接口类型,如下所示,这里主要针对Virtual IP记录一些最佳实践建议. 思科WLC的Virtual IP地址的作用: • Mobility management • DHCP ...
- 南京邮电大学网络攻防平台(NCTF)-MD5-Writeup
南京邮电大学网络攻防平台-MD5-Writeup 题干如下: 分析: 遍历 TASC?O3RJMV?WDJKX?ZM(?替换为其他),找到md5为e9032???da???08????911513?0 ...
- queue的使用-Hdu 1702
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 关于jsp的action如何调用servlet的自定义方法
一.起因: 希望将同属于某个模块的简单功能整合到一起,不创建太多的servlet 二.问题描述: action或者method属性是否能直接调用自定义方法 三.补充知识点: 查询得知:servelet ...
- 201771010135 杨蓉庆/张燕《面对对象程序设计(java)》第十三周学习总结
1.实验目的与要求 (1) 掌握事件处理的基本原理,理解其用途: (2) 掌握AWT事件模型的工作机制: (3) 掌握事件处理的基本编程模型: (4) 了解GUI界面组件观感设置方法: (5) 掌握W ...
- 原生js登录创建cookie
原生js创建cookie,功能:点击登录按钮时,将用户名.密码存为cookie:页面再次加载时,自动读取cookie中的用户名.密码. <html><head><titl ...
- Python(三)enumerate函数
原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...
- 学习笔记(22)- plato-训练端到端的模型
原始文档 Train an end-to-end model To get started we can train a very simple model using Ludwig (feel fr ...
- 8,xhtml和html有什么区别
8,xhtml和html有什么区别 功能上有差别:xhtml可以兼容各大浏览器,手机,以及pda,浏览器也能快速准确地翻译网页 书写嘻惯的差别:xhtml必须正确的嵌套,闭合,区分大小写,文档必须有根 ...
- mysql中utf8字符集的设置及character_set_database属性修改
mariadb配置文件修改字符集: [mysqld] atadir=/usr/local/mysql/datasocket=/tmp/mysql.sock # Disabling symbolic-l ...