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里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之 ...
随机推荐
- [Usaco2007 Jan]Telephone Lines架设电话线(最短路,二分)
[Usaco2007 Jan]Telephone Lines架设电话线 Description FarmerJohn打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向 ...
- 20180708-Java运算符
public class Test{ public static void main(String args[]){ int a = 10; int b = 20; int c = 25; int d ...
- 牛客多校第一场 Random Point in Triangle
https://ac.nowcoder.com/acm/contest/881/F 打表代码: #include<bits/stdc++.h> using namespace std; ] ...
- vue子组件获取父组件的数据
- 转载:TypeError: Cannot read property 'compilation' of undefined vue 打包运行npm run build 报错
转载自:https://www.jianshu.com/p/3f8f60e01797 运行npm run build打包时,报错如下: 我的package.json如下: { ... " ...
- 用 margin 还是用 padding ?
边界(margin):元素周围生成额外的空白区."空白区"通常是指其他元素不能出现且父元素背景可见的区域. 补白(padding):补白位于元素框的边界与内容区之间.很自然,用于影 ...
- vue里面的this指向
this.$http.jsonp(api).then(function(response){ console.log(response); console.log(this); this.list=r ...
- 015-Spring Boot 定制和优化内嵌的Tomcat
一.内嵌web容器 参看http://www.cnblogs.com/bjlhx/p/8372584.html 查看源码可知提供以下三种: 二.定制优化tomcat 2.1.配置文件配置 通过appl ...
- 使用Xmanager远程CentOS 7服务器(XDMCP)
0. 前言 基本概念 简略概述 Display Manager 提供登录需求 在文字界面下可以通过startx来启动Xwindows 在runlevel 5下,在tty7处有可以使用的图形登录界面(方 ...
- .NET简单三层的理解
1.UI 表示层 :就是我们看到的网站前台2.BLL 业务逻辑层:很简单 也很重要 处理逻辑问题 简单程序看不出啥效果3.DAL 数据访问层: 写数据连接和执行的SQL语句4.MODEL 模型层:封装 ...