第七章 字符串
字符串
本章讲解Go语言的字符串类型
一、定义
字符串可以使用 双引号(" ")或者 反引号(` `)来创建。双引号用来创建可解析的字符串,但不能用来引用多行,这也是大多数字符串的定义方式。
反引号用来创建原生的字符串,这些字符串可以由多行组成。多用于多行消息,HTML以及正则表达式。
package main
import "fmt"
func main() {
shortString := "Hello, World!"
hello := "你好,世界!"
longString := `
Hello,
my friend
.This is a long string`
fmt.Println(shortString)
fmt.Println(hello)
fmt.Println(longString)
}
运行输出结果
二、拼接操作
字符串支持拼接操作,使用“ + ”操作符将两个字符串拼接起来
str1 := "Hello"
str2 := "world"
str3 := str1 + str2
fmt.Println(str3)
如果想要创建一个长的可解析字符串变量,但又不想在代码中写同意长的一行,也可以使用“ + ”拼接符将这些片段连接起来。还有,Go语言的字符串是不可变的,但它们支持“ += ”追加操作符。
text := "the very things that in the moment dampen our moods " +
"can later be sources of intense gratification"
text += " and delight."
fmt.Println(text)
三、使用fmt包来格式化字符串
fmt包中的打印函数
语法 |
含义 |
---|---|
fmt.Errorf(format, args...) |
返回一个包含所给定的格式化字符串以及args参数的错误值 |
fmt.Fprint(writer, args...) |
按照格式%v和空格分隔的非字符串将args写入writer中,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Fprintf(writer, format, args...) |
按照字符串格式format将args参数写入writer,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Fprintln(writer, args...) |
按照格式%v以空格分隔的非字符串将args写入writer,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Print(format, args...) |
按照格式%v以空格分隔的非字符串将args写入os.Stdout,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Printf(format, arg...) |
使用格式化字符串format将args写入os.Stdout,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Println(format, arg...) |
按照格式%v以空格分隔以换行符结尾将参数args写入os.Stdout,返回写入的字节数和一个值为error或者nil的错误值 |
fmt.Sprint(args...) |
返回args参数组成的字符串,每个参数都使用%v进行格式化的使用空格分离的非字符串 |
fmt.Sprintf(format,args...) |
返回使用格式format格式化的args字符串 |
fmt.Sprintln(args) |
返回使用格式%v格式化args后的字符串,以空格分隔以换行符结尾 |
str4 := fmt.Sprintf("%s %s", str1, str2)
fmt.Println(str4)
四、strconv包
strconv包提供了字符串和其他类型的数据之间进行转换的函数:
strconv.ParseInt(s, base, bits)
: 如果s能够转换成一个整数,则返回int64值和nil,否则返回0和error;如果base为0,则表示要从s中判断进制的大小。
其他参考package strconv
// string to numeric
fmt.Println("---- demo String To Numeric----")
str1_val1 := "5"
str2_val2 := "2.8769"
var err error
var int_val1 int64
int_val1, err = strconv.ParseInt(str1_val1, 10, 32) // base10, 64 size
if err == nil {
fmt.Println(int_val1)
} else {
fmt.Println(err)
}
var float_val2 float64
float_val2, err = strconv.ParseFloat(str2_val2, 64) // 64 size
if err == nil {
fmt.Println(float_val2)
} else {
fmt.Println(err)
}
五、测试代码
package main
import (
"fmt"
"strconv"
)
func main() {
// 拼接字符串
str1 := "Hello"
str2 := "world"
str3 := str1 + str2
fmt.Println(str3)
str4 := fmt.Sprintf("%s %s", str1, str2)
fmt.Println(str4)
text := "the very things that in the moment dampen our moods " +
"can later be sources of intense gratification"
text += " and delight."
fmt.Println(text)
// 字符串转换我数字类型
fmt.Println("---- demo String To Numeric----")
str1_val1 := "5"
str2_val2 := "2.8769"
var err error
var int_val1 int64
int_val1, err = strconv.ParseInt(str1_val1, 10, 32) // base10, 64 size
if err == nil {
fmt.Println(int_val1)
} else {
fmt.Println(err)
}
var float_val2 float64
float_val2, err = strconv.ParseFloat(str2_val2, 64) // 64 size
if err == nil {
fmt.Println(float_val2)
} else {
fmt.Println(err)
}
// 数字类型转字符串
fmt.Println("---- demo numeric to string ----")
num1 := 8
num2 := 5.872
var str_num1 string
str_num1 = fmt.Sprintf("%d", num1)
fmt.Println(str_num1)
var str_num2 string
str_num2 = fmt.Sprintf("%f", num2)
fmt.Println(str_num2)
}
六、运行代码并查看结果
- Java程序员的日常—— Spring Boot单元测试
- Windows下TensorFlow安装指南(图文版)
- 20120918-双向链表类定义《数据结构与算法分析》
- 20120918-LIST类定义《数据结构与算法分析》
- Scala入门学习笔记四--List使用
- 20120918-向量实现《数据结构与算法分析》
- hadoop 1.x环境搭建
- JavaScript二维码生成——qrcode.js
- Spark中文指南(入门篇)-Spark编程模型(一)
- HDOJ 1008
- 单链表反转的分析及实现
- 在windows下使用eclipes连接linux下的Hadoop集群
- 移动端弹框后禁用页面滑动
- 移动端图片放大滑动查看-插件photoswipe的使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 通过常见的业务掌握SQL高级功能
- 滴滴出行数据分析师面试经验
- 如何制作推论统计分析报告
- 全局唯一 ID 服务的分布式ID生成系统
- SpringBoot 国际化实现跨地区的多语言切换
- MySQL 死锁产生原因和解决方法
- 手把手教你ShardingSphere和Mybatis拦截器实现特殊字段动态切换加密
- Swagger3.0官方starter诞生,可以扔掉那些野生starter了
- Prometheus 入门教程(一):Prometheus 快速入门
- 开发|ShiroConfig实现基础拦截
- 推荐几个 VS Code 扩展、主题和字体
- 万字长文 | 这可能是东半球最保姆级的后台服务器开发学习路线
- Python|对多角星的绘制
- Pythyon|当中秋遇上国庆
- 清华老哥要是会 screen,是不是就不用拖着电脑骑车了