Go語言基礎資料型別轉換

2021-10-25 10:36:21 字數 2688 閱讀 8774

前面給大家分享過go語言中的基本資料型別(沒有關注的可以看下歷史訊息),分別是 布林型別、整形、浮點型、複數型別、字串和字元型別 ,go語言是強型別語言,不能像php那樣可以自動轉換,需要顯示的進行強制轉換。

這裡是引用go語言基礎資料型別之萬丈高樓平地起

數值型別之間的轉換

在進行數值型別轉化時只需要使用要轉換的對應的函式即可:

v1 :=

uint(16

)// 初始化 v1 為 uint

v2 :=

int8

(v1)

// 將 v1 轉換為 int8型別

v3 :=

uint

(v2)

// 將 v2 轉換為 uint 型別

val :=

uint(-

17)// uint是無符號型別,所以會報錯

val1 :=

uint

(255

) val2 :=

int8

(val1)

// val2 = -1

通過上述例子可以看到在有符號和無符號以及高位數字向低位轉換時,需要注意數字的溢位和截斷

整型和浮點型別的轉換時,浮點轉換整型時,小數字被丟棄,整型轉換為浮點時直接使用對應函式即可,如下:

v1 :=

99.99

v2 :=

int(v1)

// 99

v3 :=

99v4 :=

float64

(v3)

字串和其他基本型別的轉換

整型可以通過對應的 utf-8 編碼轉化為對應的字串:

v1 :=

66v2 :=

string

(v1)

// b

v3 :=

20011

v4 :=

string

(v3)

// 丫

還可以將位元組陣列或者 rune 陣列轉換為字串:

v1 :=

byte

v2 :=

string

(v1)

// kelvin

數值型別和布林型別的轉換

目前go不支援將數值型別轉換為布林型別,我們可以根據自己的需求去轉換。

strconv包

go語言不支援將字串型別轉換為數值型別,我們可以通過 strconv 包來進行實現:

// string -> int

v1 :=

"99"

v2, err := strconv.

atoi

(v1)

// 99

// int -> string

v3 :=

99 v4 := strconv.

itoa

(v3)

// "99"

// int64 -> string

v5 :=

int64

(100

) v6 := strconv.

formatint

(v5,10)

// "100"

// float -> string

v7 :=

99.99

v8 := strconv.

formatfloat

(v7,

'f',-1

,64)// 第二個引數-格式標記f:沒有指數;第三個引數-精度;第四個引數-指定浮點型別

// v8 := fmt.sprintf("%.2f", v7) // 或者可以這樣

// string -> bool

v9 :=

"true"

v10, err := strconv.

parsebool

(v9)

// string -> float64

v11 :=

"99.66"

v12, err := strconv.

parsefloat

(v11,64)

//第二個引數為指定的精度

// string -> uint

v13 :=

"88"

v14, err := strconv.

parseuint

(v13,10,

64)// 第二個引數表示進製,第三個引數表示最大位數

// string -> byte

v15 :=

"99"

v16 :=

byte

(v15)

// string-> int32/int64

v17 :=

"100"

v18 := strconv.

parseint

(v17,10,

64)// 第三個引數表示最大位數,選擇32/64

基礎型別的轉換大概就這些,還有我們常用的時間和字串轉換等後面我們再分享,關於 strconv 包的具體使用大家可以看下對應的api。

go資料型別轉換

在必要以及可行的情況下,乙個型別的值可以被轉換成另一種型別的值。由於go語言不存在隱式型別轉換,因此所有的型別轉換都必須顯式的宣告 valueoftypeb typeb valueoftypea 型別轉換只能在定義正確的情況下轉換成功,例如從乙個取值範圍較小的型別轉換到乙個取值範圍較大的型別 將 i...

Go語言你基礎資料型別

布林型別 位元組型別 go語言中的字串型別都是不可變型別,預設使用utf 8編碼。兩種表示形式 1 雙引號表示 var a char 定義個字串變數a,值為 char 當然雙引號裡面也可以是轉義字元,八進位制表示或十六進製制表示。var a 中 n國 var b x61 var c 142 2 單引...

Go語言資料型別

go語言任何乙個變數都有乙個型別。go語言的資料型別分為基礎型別 引用型別 結構型別 基礎型別 數值型別 字元型別 字串型別 布林型別 陣列型別 引用型別 切片 map channel inte cce型別 結構型別 結構體go語言整型分為有符號 無符號型別兩大型別 有符號整數型別 既可以支援正數也...