go中的變量類型轉換


原文:Go中的各種變量類型轉換

Go中的各種變量類型轉換

從PHP轉向GO,最不能適應的是GO是強類型語言,變量的申明需要指定其類型,相同的變量之間才可以做算術、關系、邏輯等運算。

 

 一、string類型

int
int8
int16
int32
int64
 string轉換成這5種類型,需要先使用 strconv.ParseInt(s,10,64), 轉換成相對應的int64,然后使用強制轉換。例如:
r,_ := strconv.Parseint(“123″,10,8)
int8(r)func ParseInt(s string, base int, bitSize int) (i int64, err error)
返回字符串表示的整數值,接受正負號。
base指定進制(2到36),如果base為0,則會從字符串前置判斷,”0x”是16進制,”0″是8進制,否則是10進制;
bitSize指定結果必須能無溢出賦值的整數類型,0、8、16、32、64 分別代表 int、int8、int16、int32、int64;返回的err是*NumErr類型的,如果語法有誤,err.Error = ErrSyntax;如果結果超出類型范圍err.Error = ErrRange。從上面的描述中,也可以得知,該方法還可以用於轉換2進制、8進制、16進制到10進制,例如:
strconv.ParseInt(“1110110″,2,64),返回結果:118特殊的方法:
func Atoi(s string) (i int, err error)
Atoi是ParseInt(s, 10, 0)的簡寫。
uint
uint8
uint16
uint32
uint64
同上,ParseUint類似ParseInt但不接受正負號,用於無符號整型
float32
float64
用法同上,先使用 strconv.ParseFloat(s,64),然后強制轉換成相對應的類型。func ParseFloat(s string, bitSize int) (f float64, err error)
解析一個表示浮點數的字符串並返回其值。
如果s合乎語法規則,函數會返回最為接近s表示值的一個浮點數(使用IEEE754規范舍入)。bitSize指定了期望的接收類型,32是float32(返回值可以不改變精確值的賦值給float32),64是float64;返回值err是*NumErr類型的,語法有誤的,err.Error=ErrSyntax;結果超出表示范圍的,返回值f為±Inf,err.Error= ErrRange。注意:使用float類型一定要注意其精度
[]byte []byte(s) ,而從字節切片轉換成string,則使用 string(b),從這里可以看出[]byte和string可以使用強制轉換。
rune 同上,先使用 strconv.ParseInt(s,10,64),轉換成int64,然后使用強制轉換
r ,_ := strconv.ParseInt(s,10,64)
rune(r)
bool bool, err := strconv.ParseBool(s)
返回字符串表示的bool值。它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否則返回錯誤。

二、bool類型

string r := strconv.FormatBool(s)
func FormatBool(b bool) string
根據b的值返回”true”或”false”。
其他類型 一般情況很少將bool轉換成字符以外的類型,如果有可將bool類型轉換成string后,再進行轉換,或者采用switch的判斷邏輯,反正bool就2種值類型。

三、int、int8、int16、int32、int64類型

string 將這5種類型轉換到string類型,需要先使用強制轉換到int64,再使用strconv.FormatInt(int64(s),10)

 

func FormatInt(i int64, base int) string
返回i的base進制的字符串表示。base 必須在2到36之間,結果中會使用小寫字母’a’到’z’表示大於10的數字。

同理:該方法也可以將這5種類型,轉換成2進制,8進制,10進制的字符串。
var s = 35
r := strconv.FormatInt(int64(s),2)
fmt.Println(r)  // 100011

特殊方法:
func Itoa(i int) string
Itoa是FormatInt(i, 10) 的簡寫。

uint
uint8
uint16
uint32
uint64
float32
float64
使用強制轉換。
var s = 35
uint(s)
uint8(s)
其他類型 可轉換到string后,再進行轉換

四、uint、uint8、uint16、uint32、uint64類型

string 將這5種類型轉換到string類型,需要先使用強制轉換到uint64,再使用strconv.FormatUint(uint64(s),10)

 

func FormatUint(i uint64, base int) string
是FormatInt的無符號整數版本。

同理:該方法也可以將這5種類型,轉換成2進制,8進制,10進制的字符串。
var s = 111
r := strconv.FormatUint(uint64(s),2)
fmt.Println(r) // 1101111

int
int8
int16
int32
int64
float32
float64
使用強制轉換。
var s = 35
int(s)
int8(s)
float64(s)
其他類型 可轉換到string后,再進行轉換

五、float32、float64類型

string var s = 111.123456
r := strconv.FormatFloat(float64(s),’f’,3,32)func FormatFloat(f float64, fmt byte, prec, bitSize int) string
函數將浮點數表示為字符串並返回。
bitSize表示f的來源類型(32:float32、64:float64),會據此進行舍入。
fmt表示格式:’f’(-ddd.dddd)、’b’(-ddddp±ddd,指數為二進制)、’e’(-d.dddde±dd,十進制指數)、’E’(-d.ddddE±dd,十進制指數)、’g’(指數很大時用’e’格式,否則’f’格式)、’G’(指數很大時用’E’格式,否則’f’格式)。
prec控制精度(排除指數部分):對’f’、’e’、’E’,它表示小數點后的數字個數;對’g’、’G’,它控制總的數字個數。如果prec 為-1,則代表使用最少數量的、但又必需的數字來表示f。
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
使用強制轉換。
var s = 35
int(s)
int8(s)


免責聲明!

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



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