Golang數據類型總結及其轉換


golang數據類型

  • 基本類型:boolean,numeric,string類型的命名實例是預先聲明的。
  • 復合類型:array,struct,指針,function,interface,slice,map,channel類型(可以使用type構造)。

數據類型轉換表

// []byte -> other type
[]byte => string : string([]byte)
[]byte => int : binary包處理, 查看下面


// int -> other type
int => string : s = strconv.Itoa(i)  
int => int32  : i32 = int32(num)
int => int64 : i64 = int64(num)
int64/int32 => int : i = int(num)
int64 => string : strconv.FormatInt(int64, 10)
int64 => time.Duration : time.Duration(int64)
int32 => byte : bytes.NewBuffer() 看上面 intbyte 互轉
int => float64 : float64(num) 
// other type -> int
i = int(int32/int64)
float64/float32 => int(int64/int32)


// string -> other type
string => int :  i, err = strconv.Atoi(s)
string => bool : strconv.ParseBool("true")
string => float32 : strconv.ParseFloat(s, 32)
string => float64 : strconv.ParseFloat(s, 64)
string => uint : strconv.ParseUint()
string => int32/int64 : strconv.ParseInt(s, 10, 32/64)
string => []byte : []byte(string)
string(16進制) => int32/int64 : strconv.ParseInt(s, 0, 32/64)

// other type -> string
int,int32,int64 => string : str1 := fmt.Sprintf("%d", i)             // i可以是int/int32/int64
                        或  str2 := strconv.Itoa(i)                  // i為int
                        或  str3 := strconv.FormatInt(int64(i), 10)  // i可以是int/int32/int64
uint64 => string : strconv.FormatUint(unit64, 10) 
bool => string : strconv.FormatBool(true)
float64 => string : strconv.FormatFloat(float64(12), 'f', -1, 64) 
                        或  fmt.Sprintf("%.2f", float64)


// array -> slice : 
1) copy(array[:], slice[0:4])  | 全部 copy(array[:], slice)
2) for
for index, b := range someSlice {
    array[index] = b
}

// slice -> array
slice=>array :    array[:]

數據類型說明

1. int類型中哪些支持負數

  • 有符號(負號):int8 int16 int32 int64
  • 無符號(負號):uint8 uint16 uint32 uint64

2. 浮點類型的值有float32和float64(沒有 float 類型)

3. byte和rune特殊類型是別名

  • byte就是unit8的別名
  • rune就是int32的別名

4. int和uint取決於操作系統(32位機器上就是32字節,64位機器上就是64字節)

  • uint是32字節或者64字節
  • int和uint是一樣的大小

5. 為了避免可移植性問題,除了byte(它是uint8的別名)和rune(它是int32的別名)之外,所有數字類型都是不同的。 在表達式或賦值中混合使用不同的數字類型時,需要轉換。例如,int32和int不是相同的類型,即使它們可能在特定架構上具有相同的大小。


筆記參考:GO基本數據類型總結




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM