GoLang中字串的一些使用總結

Bacer發表於2021-09-09

在專案當中接觸到最多的應該就是字串了,有比如,在寫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)

這是stringint

    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)
}

字串相關的內容大概就這麼多。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2768/viewspace-2815788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章