在项目当中接触到最多的应该就是字符串了,有比如,在写API时收到前台发来的请求,大部分我相信都是字符串,我们接下来就针对字符串在GoLang中的一些处理做个小小的总结。
文/谦益
一、字符串的格式化输出
package main
import "fmt"
func main() {
fmt.Println("Hello")
}
我相信这是所有人入门输入的第一句代码,足够简单,我们深入一点。
package main
import "fmt"
func main() {
fmt.Printf("Hi, my name is %v","BoB")
}
当我们需要在输出的字符里面插入一些自己想加的内容,那就要用到格式化了,和其他的C语言啥的都类似,这里我列一下这些动词和功能的具体参数:
动词 | 功能 |
---|---|
%v | 按照值的本来值输出 |
%+v | 在%v基础上,对结构体字段名和1值进行展开 |
%#v | 输出Go语言语法格式的值 |
%T | 输出Go语言-语法格式的类型和值 |
%% | 输出%本体 |
%b | 整型以二进制方式显示 |
%。 | 整型以八进制方式显示 |
%d | 整型以十进制方式显示 |
%x | 整型以十六进制方式显示 |
%X | 整型以十六进制、字母大写方式显示 |
%U | Unicode字符 |
%f | 浮点数 |
%p | 指针,十六进制方式显示 |
有些我们不常用的,可以先不记住他,用到了再来查也可以。
二、字符串的类型转换
当我们收到客户端发来的请求时,大部分数据都是需要我们二次处理才能使用的,比如把字符串转int
,转int64
等接下来咱们看看Go里面怎么转的。
AByString := "1"
BByInt := 2
//类型转换成int
CByInt,err := strconv.Atoi(AByString)
if err != nil {
fmt.Errorf("类型转换出错 %v",err)
}
fmt.Println(BByInt + CByInt)
这是string
转int
。
AByString := "1"
//字符串转int64
DByInt64, err := strconv.ParseInt(AByString, 10, 64)
//int64转string
EByString := strconv.FormatInt(DByInt64, 10)
EByInt64, err := strconv.ParseInt(EByString, 10, 64)
fmt.Println(EByInt64 + DByInt64)
这里用到了:
- string转int64
- int64转string
strconv
包里面有很多API是用来转换数据类型,这里就不一一列举了,我们常见的类型转换里面都已经包含了。
三、字符串的加密解密
加密解密是项目里面必不可少的,比如数据传输时,如果明文传输是一件非常可怕的事,我给大家介绍两个常见的加密算法:
Base64
首先是一个可逆的加密算法 base64,Go语言中提供了加密模块,我们直接使用就好了。
import (
"fmt"
"encoding/base64"
)
func main() {
// 声明一个字符串,并转换为byte数组
input := []byte("hello world")
// base64编码
encodeString := base64.StdEncoding.EncodeToString(input)
fmt.Println(encodeString)
// 对上面的编码结果进行base64解码
decodeBytes, err := base64.StdEncoding.DecodeString(encodeString)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(decodeBytes))
}
在数据加密解密这块Go语言做得是比较不错的。
MD5
MD5和BASE64差不多,直接就看范例吧:
import (
"fmt"
"crypto/md5"
)
func main() {
// 声明一个字符串,并转换为byte数组
input := []byte("hello world")
has := md5.Sum(input)
md5str1 := fmt.Sprintf("%x", has) //将[]byte转成16进制
fmt.Println(md5str1)
}
字符串相关的内容大概就这么多。