本章讲解Go语言的字符串类型
一、定义
字符串可以使用 双引号(" ")或者 反引号(` `)来创建。双引号用来创建可解析的字符串,但不能用来引用多行,这也是大多数字符串的定义方式。
反引号用来创建原生的字符串,这些字符串可以由多行组成。多用于多行消息,HTML以及正则表达式。
package mainimport "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 + str2fmt.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 mainimport ( "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)}
六、运行代码并查看结果
评论(0)