GoLang基本資料型別之間的相互轉換

2021-10-19 07:10:30 字數 3573 閱讀 8205

//demo06

fmt.

println

("")n1 :=

100f2 :=

float32

(n1)

fmt.

println

("int型別的100轉為float32,結果:"

,f2)

fmt.

println

("")f3 :=

3.14

var n2 =

int(f3)

fmt.

println

("3.14轉為int,結果:"

,n2)

fmt.

println

("")var n3 int8

=125

var n4 =

int(n3)

fmt.

println

("int8型別的125轉int64,結果:"

,n4)

fmt.

println

("")//這裡比較好玩,如果是128 轉出來的是-128,129-> -127 依次類推 256為0 如果再大就會是 1,有點一致性雜湊環的感覺,不管你傳啥都會在-128 - 127之間

//所以在用的時候要特別小心

n5 :=

128var n6 =

int8

(n5)

fmt.

println

("int型別的128轉int8,結果:"

,n6)

fmt.

println

("")//這裡跟上面一樣,會取到正值

var n7 int=-

300var n8 =

uint

(n7)

fmt.

println

("int型別的-300轉uint,結果:"

,n8)

int型別的100轉為float32,結果: 100

3.14轉為int,結果: 3

int8型別的125轉int64,結果: 125

int型別的128轉int8,結果: -128

int型別的-300轉uint,結果: 18446744073709551316

//int型別轉string  //demo07

n1 :=

110//方式一(推薦方式)

sn1 := fmt.

sprintf

("%d"

,n1)

fmt.

printf

("sn1資料型別:%t 值為:%v \n"

,sn1,sn1)

//方式二

sn2 := strconv.

itoa

(n1)

fmt.

printf

("sn2資料型別:%t 值為:%v \n"

,sn2,sn2)

//float64轉string

f1 :=

3.14

//方式一(推薦)

sf1 := fmt.

sprintf

("%.3f"

,f1)

fmt.

printf

("sf1資料型別:%t 值為:%v \n"

,sf1,sf1)

//第二個引數:'f'(-ddd.dddd) 第三個引數:9 保留小數點後面9位 第四個引數:表示這個小數是float64型別

sf2 := strconv.

formatfloat

(f1,

'f',3,

64)fmt.

printf

("sf2資料型別:%t 值為:%v \n"

,sf2,sf2)

//bool轉string

var flag bool

//方式一(推薦)

sb1 := fmt.

sprintf

("%d"

, flag)

fmt.

printf

("sb1資料型別:%t 值為:%v \n"

,sb1,sb1)

//方式二

sb2 := strconv.

formatbool

(flag)

fmt.

printf

("sb2資料型別:%t 值為:%v \n"

,sb2,sb2)

//字元型別轉string

c :=

'a'//第一種方式

sc1 := fmt.

sprintf

("%c"

, c)

fmt.

printf

("sc1資料型別:%t 值為:%v \n"

//string轉int64 //demo08

sn1 :=

"100"

//引數1 :待轉換的字串 引數2:轉為幾進製 引數3:轉為int多少

//返回值為乙個元組 返回值1:轉換的結果 返回值2:異常資訊

//這裡跟python有點像 不想要的值可以用_忽略掉

n1,_

:= strconv.

parseint

(sn1,10,

64)fmt.

printf

("n1的型別為:%t 值為:%v \n"

,n1,n1)

//string轉float34

sf1 :=

"3.14"

f1,_

:= strconv.

parsefloat

(sf1,64)

fmt.

printf

("f1的型別為:%t 值為:%v \n"

,f1,f1)

//string轉bool

sb1 :=

"true"

b1,_

:= strconv.

parsebool

(sb1)

fmt.

printf

("b1的型別為:%t 值為:%v \n"

,b1,b1)

//不是對應的string型別轉換為bool,會轉換為對應型別預設值

sb2 :=

"golang"

b2,_

:= strconv.

parsebool

(sb2)

fmt.

printf

("b1的型別為:%t 值為:%v \n"

,b2,b2)

友情提醒如果string型別的值不是轉換的目標型別,則會取對應型別的預設值

基本資料型別之間的運算

package com.guaji.exer import org.junit.test 基本資料型別之間的運算 這裡講的是7種基本資料型別,不包含 boolean 1 自動提公升資料型別,當容量小的資料型別與容量大的資料做運算時,會自動提公升為容量大的資料型別 特別是當 byte short ch...

基本資料型別之間的轉換

基本資料型別的轉換分為自動型別轉換和強制型別轉換 在進行資料型別的轉換之前我們需要知道各個資料型別的範圍大小的排序,見下圖。從小到大依次排序 自動化型別轉換即從小範圍的型別轉換到大範圍的型別。比如從int型別轉換為double型別。自動型別轉換是可以直接進行的。例如下面的例子,當我把num1的值賦值...

基本資料型別之間的轉換

自動型別轉換 基本資料的自動型別轉換只有7種資料型別,除了布林型 基本原則 低級別可以轉高階別 從左向右可以依次轉換 byte short int long float double char int long float double 運算時的自動轉換條件 兩種資料型別要相容,目標型別大於原型別 ...