Golang常見型別轉換

2021-10-03 10:55:28 字數 3399 閱讀 1800

int

(time.

now().

weekday()

)//星期轉int

int(time.

now().

month()

)//月份轉int

var a float64

a =3.1

b :=

int(a)

//float64轉int

var a int

a =1

b :=

int64

(a)//int轉int64

**

string和int、int32、int64:

i,

_:= strconv.

atoi

(s)//string轉int

s := strconv.

itoa

(i)//int轉string

i,

_:= strconv.

parseint

(s,10,32

)//string轉int32

ii :=

int32

(i)

i,

_:= strconv.

parseint

(s,10,64

)//string轉int32

s := strconv.

formatint

(i,10

)//int64轉string

parseint函式的官方介紹:

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。

formatint函式中的10,表示10進製。

string和float32、float64:

f,

_:= strconv.

parsefloat

(s,32

)//string轉float32

ff :=

float32

(f)

f,

_:= strconv.

parsefloat

(s,64

)//string轉float64

s := strconv.

formatfloat

(f,'f',-

1,64)

//float64轉string

parsefloat函式的官方介紹:

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。

formatfloat函式的官方介紹:

func

formatfloat

(f float64

, fmt byte

, prec, bitsize int

)string

–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。

string和time:

t,

_:= time.

parse

("2006-01-02 15:04:05"

, s)

//string轉時間t,_

:= time.

parseinlocation

("2006-01-02 15:04:05"

, s, time.local)

//string轉本地時間

s := t.

format

("2006-01-02 15:04:05"

)//時間轉string

expression必須是介面型別,且自身型別與type型別相符。

expression.(type)的返回值一般為兩個:value和ok,匹配成功ok為true,value有值,匹配失敗ok為false,value無值;也可以直接接受value乙個返回值,不過失敗則直接panic:

func

main()

=100

if aa, ok := a.

(int

); ok

}

還可以結合switch和case使用,來判斷介面實際型別:

func

main()

=100

switch i := t.

(type

)}

golang中大多數資料型別都可以轉化為有效的json文字,除了channel通道、complex複數、func函式等。

golang指標可進行隱式轉換,表面進行的是指標序列化,內部會針對指標進行取值操作,實際還是針對所指的物件進行序列化。

Golang常見型別轉換

int time.now weekday 星期轉int int time.now month 月份轉intvar a float64 a 3.1 b int a float64轉intvar a int a 1 b int64 a int轉int64 string和int int32 int64 i...

golang 型別轉換

go 檢視變數型別 reflect.typeof 變數名 int 轉string s strconv.itoa i 等價於 strconv.formatint int i 10 示例 func zhuan int64轉string i int64 123 s strconv.formatint i,...

golang時間型別轉換

1.獲取當前時間,返回utc時間currenttime time.now fmt.printf v t n currenttime,currenttime 2.獲取當前時間戳timeunix time.now unix 單位秒 fmt.printf v t n timeunix,timeunix t...