go中字符串类型string的用法
示例
// 字符串类型string的用法
package main
import (
"fmt"
"unsafe"
)
func main() {
// 字符串类型 str1
var str1 string = "上海 北京 12345 西安"
fmt.Printf("str1 的值为 %s, %v, %q, 类型为 %T, 占 %d 个字节\n", str1, str1, str1, str1, unsafe.Sizeof(str1)) // str1 的值为 上海 北京 12345 西安, 上海 北京 12345 西安, "上海 北京 12345 西安", 类型为 string, 占 16 个字节
var str2, str3 string = "hello ", "world"
fmt.Printf("str2 = %q, %v, %s, str3 = %q, %v, %s\n", str2, str2, str2, str3, str3, str3) // str2 = "hello ", hello , hello , str3 = "world", world, world
// 错误:cannot assign to str2[1]
// go中的字符串是不可变的,一旦被赋值,不能再修改
// str2[1] = 'k'
// fmt.Printf("str2 = %v\n", str2)
// 双引号会识别转义字符
// 中文字符串
str4 := "你好\000北京\t上海济南武汉\007天津\x7f"
fmt.Printf("str4 = %v\n", str4) // str4 = 你好北京 上海济南武汉天津
fmt.Printf("str4 = %s\n", str4) // str4 = 你好北京 上海济南武汉天津
// %v和%s一起格式化字符串时,输出的结果不一样
fmt.Printf("str4 = %v, %s\n", str4, str4) // str4 = 你好北京 上海济南武汉天., 你好北京 上海济南武汉天津
// 英文字符串
str5 := "hello\000world\tgood\007yellow\x7f"
fmt.Printf("str5 = %v\n", str5) // str5 = helloworld goodyellow
fmt.Printf("str5 = %s\n", str5) // str5 = helloworld goodyellow
// %v和%s一起格式化字符串时,输出的结果不一样
fmt.Printf("str5 = %v, %s\n", str5, str5) // str5 = helloworld goodyello, helloworld goodyellow
// 反引号,以字符串的原生形式输出,包括换行和特殊字符
// 下面用反引号原样输出一段示例代码
var str6 = `
// bool布尔类型的用法
package main
import (
"fmt"
"unsafe"
)
func main() {
// bool类型
b1 := false
fmt.Printf("b1的值为 %t, 类型为 %T, 占 %d 个字节\n", b1, b1, unsafe.Sizeof(b1)) // b1的值为 false, 类型为 bool, 占 1 个字节
// b1 = 1 会报错: cannot use 1 (type int) as type bool in assignment
// 因为b1是bool类型,只能取值true或者false
// 不可以用0或者非0的整数替代false或者true,这点与C语言不同
// n1 := 1
// 错误:non-bool n1 (type int) used as if condition
// if n1 {
// fmt.Printf("n1 = %d\n", n1)
// }
// 错误:cannot use 0 (type int) as type bool in assignment
// var b2 bool = 0
// fmt.Printf("b2 = %t\n", b2)
}
`
fmt.Printf("\t示例代码: \n%v\n", str6)
// 以上代码会输出:
//
// 示例代码:
// bool布尔类型的用法
// package main
// import (
// "fmt"
// "unsafe"
// )
// func main() {
// // bool类型
// b1 := false
// fmt.Printf("b1的值为 %t, 类型为 %T, 占 %d 个字节\n", b1, b1, unsafe.Sizeof(b1)) // b1的值为 false, 类型为 bool, 占 1 个字节
// // b1 = 1 会报错: cannot use 1 (type int) as type bool in assignment
// // 因为b1是bool类型,只能取值true或者false
// // 不可以用0或者非0的整数替代false或者true,这点与C语言不同
// // n1 := 1
// // 错误:non-bool n1 (type int) used as if condition
// // if n1 {
// // fmt.Printf("n1 = %d\n", n1)
// // }
// // 错误:cannot use 0 (type int) as type bool in assignment
// // var b2 bool = 0
// // fmt.Printf("b2 = %t\n", b2)
// }
// 用加号 '+' 进行拼接
str7, str8, str9 := "你好", " 中国 ", "北京"
// 加号两边必须都是字符串才可以拼接
newStr1 := str7 + str8 + str9
fmt.Printf("拼接之后的新串为 %q, %v\n", newStr1, newStr1) // 拼接之后的新串为 "你好 中国 北京", 你好 中国 北京
// 字符串过长时用 '+' 进行分行,然后拼接
// 加号必须放在分行的最右边
var str10 string = "剑阁峥嵘而崔嵬,一夫当关,万夫莫开。" +
"所守或匪亲,化为狼与豺。朝避猛虎,夕避长蛇;磨牙吮血," +
"杀人如麻。锦城虽云乐,不如早还家。蜀道之难,难于上青天," +
"侧身西望长咨嗟!"
fmt.Printf("str10的内容为:%v\n", str10) // str10的内容为:剑阁峥嵘而崔嵬,一夫当关,万夫莫开。所守或匪亲,化为狼与豺。朝避猛虎,夕避长蛇;磨牙吮血,杀人如麻。锦城虽云乐,不如早还家。蜀道之难,难于上青天,侧身西望长咨嗟!
}
总结

go中字符串类型string的用法的更多相关文章
- JAVA中字符串函数subString的用法小结
本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...
- JavaScript中字符串分割函数split用法实例
这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...
- java 字符串类型String
在本质上,字符串实际上一个char类型的数组,由java.lang.String类来表示,该类具有一系列的属性和方法,提供对字符串的一些操作.除此之外,java还提供了StringBuffer类来处理 ...
- java和数据库中日期类型的常见用法
(1)java中日期类型:Date.Timestamp(2)数据库中:Date.Timestamp(3)字符串和Date之间的格式化转换: SimpleDateFormat类方法: format ...
- JavaScript中字符串类型
字符串类型 字符串介绍 这是程序里面使用最为广泛的一-种类型.在JavaScript里面, 可以使用单引号,也可以使用双引号: 字符串这种数据类型非常霸道,它和其他数据类型相加都会被转换后才为字符串类 ...
- java中字符串池,String池,共享池到底是怎么回事?
栈中有共享池的概念,比 如下面例子中,sz="hello";在栈中创建一个String对象引用变量sz,然后看看栈中有没有"hello",如果没有,则将&quo ...
- mysql中字符串类型char(n)和varchar(n)的区别
n的含义 根据网络上找到的结果(不能保证准确),在5.0.3以后版本中,n均代表字符数,而不是字节数:我用来测试的版本是5.7.20,该版本中,n表示字符数. 验证过程如下 建表 CREATE TAB ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字符串类型(string)
关于Python的字符串处理也如其他语言一样属于重点中的重点,主要是牵扯到的函数和内容较为多和乱一些.关于什么是字符串,Python中的定义是:以单引号或者双引号括起来的任意文本. 1. 字符串的 ...
- Swift中可选类型(Optional)的用法 以及? 和 ! 的区别 (转载博客,知识分享)
本文转载自:代码手工艺人的博客,原文名称:Swift之 ? 和 ! Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之 ...
随机推荐
- [POI2007]POW-The Flood(并查集)
[POI2007]POW-The Flood Description AKD 市处在一个四面环山的谷地里.最近一场大暴雨引发了洪水,AKD 市全被水淹没了.Blue Mary,AKD 市的市长,召集了 ...
- RedisTemplate 事务处理方法 watch multi exec 的使用
@Autowired RedisTemplate<String,String> redisTemplate; redisTemplate.execute(new SessionCallba ...
- 610K图纸打印新版增值税发票不完整的调整方法 黑盘红盘都兼容
新版增票页面设置增票向下0.8向右-10,5刻度进纸测试 向右调整可能会有些出入 根据情况微调即可. 下面为黑盘的设置 可与上面兼容
- springboot操作rabbitmq
////DirectExchange directExchange = new DirectExchange("test.direct");////amqpAdmin.declar ...
- JS原型和原型链(3)
构造函数创建对象: function Person() { } var person = new Person(); person.name = 'Kevin'; console.log(person ...
- Hash树——数据结构
- MyBatis3学习笔记(曹锋老师版)
第2讲 这一讲主要讲解了 Mybatis 的主配置文件. 下面是一个示例的配置文件: <?xml version="1.0" encoding="UTF-8&quo ...
- java并发编程如何预防死锁
在java并发编程领域已经有技术大咖总结出了发生死锁的条件,只有四个条件都发生时才会出现死锁: 1.互斥,共享资源X和Y只能被一个线程占用 2.占有且等待,线程T1已经取得共享资源X,在等待共享资源Y ...
- vue2.X 与 vue1.X 的区别
vue2.0: bower info vue http://vuejs.org/ 到了2.0以后,有哪些变化? 1. 在每个组件模板,不在支持片段代码 组件中模板: 之前: <template& ...
- selenuim&PhantomJS&Beautifulsoup练习经典实例
# coding = utf-8__autor__ = 'litao' from selenium import webdriverfrom selenium.webdriver.common.by ...