golang一般常用數(shù)據(jù)類型轉(zhuǎn)換總結(jié)

在編程中經(jīng)常會(huì)碰到一些數(shù)據(jù)類型轉(zhuǎn)換問(wèn)題残吩,每次都要搜索查詢好久,今天直接自己整理一下

string

string到int (Atoi)

int,err:=strconv.Atoi(string)  

string到int (ParseInt)

// ParseInt 將字符串轉(zhuǎn)換為 int 類型
// s:要轉(zhuǎn)換的字符串
// base:進(jìn)位制(2 進(jìn)制到 36 進(jìn)制)
// bitSize:指定整數(shù)類型(0:int、8:int8、16:int16、32:int32、64:int64)
// 返回轉(zhuǎn)換后的結(jié)果和轉(zhuǎn)換時(shí)遇到的錯(cuò)誤
// 如果 base 為 0忌卤,則根據(jù)字符串的前綴判斷進(jìn)位制(0x:16,0:8楞泼,其它:10)
func ParseInt(s string, base int, bitSize int) (i int64, err error)

fmt.Println(strconv.ParseInt("123", 10, 8))

string到int64

int64, err := strconv.ParseInt(string, 10, 64)  

string到uint

// ParseUint 功能同 ParseInt 一樣驰徊,只不過(guò)返回 uint 類型整數(shù)
func ParseUint(s string, base int, bitSize int) (n uint64, err error)

fmt.Println(strconv.ParseUint("FF", 16, 8))

string到bool

// ParseBool 將字符串轉(zhuǎn)換為布爾值

// 它接受真值:1, t, T, TRUE, true, True

// 它接受假值:0, f, F, FALSE, false, False.

// 其它任何值都返回一個(gè)錯(cuò)誤

strconv.ParseBool("1")

string到float

// s:要轉(zhuǎn)換的字符串
// bitSize:指定浮點(diǎn)類型(32:float32笤闯、64:float64)
// 如果 s 是合法的格式,而且接近一個(gè)浮點(diǎn)值棍厂,
// 則返回浮點(diǎn)數(shù)的四舍五入值(依據(jù) IEEE754 的四舍五入標(biāo)準(zhǔn))
// 如果 s 不是合法的格式颗味,則返回“語(yǔ)法錯(cuò)誤”
// 如果轉(zhuǎn)換結(jié)果超出 bitSize 范圍,則返回“超出范圍”
func ParseFloat(s string, bitSize int) (f float64, err error)

s := "0.12345678901234567890"
f, err := strconv.ParseFloat(s, 32)
fmt.Println(f, err)          // 0.12345679104328156

string到time

其中l(wèi)ayout的時(shí)間必須是"2006-01-02 15:04:05"這個(gè)時(shí)間牺弹,不管格式如何浦马,時(shí)間點(diǎn)一定得是這個(gè),如:"Jan 2, 2006 at 3:04pm (MST)"张漂,"2006-Jan-02"等晶默。如換一個(gè)時(shí)間解析出來(lái)的時(shí)間就不對(duì)了,要特別注意這一點(diǎn)航攒。

layout := ""2006-01-02 15:04:05.999999""
t, _ := time.Parse(layout, "2013-10-05 18:30:50")
fmt.Println(t.Year())
// 當(dāng)前時(shí)區(qū)時(shí)間格式化轉(zhuǎn)換
strTime := "2018-03-24T20:01:00+08:00"
tim, _:=time.ParseInLocation("2006-01-02T15:04:05+08:00", strTime, time.Local)

int

int到string

string:=strconv.Itoa(int)  

將 int 型整數(shù) i 轉(zhuǎn)換為字符串形式磺陡,并追加到 dst 的尾部

// AppendInt 將 int 型整數(shù) i 轉(zhuǎn)換為字符串形式,并追加到 dst 的尾部
// i:要轉(zhuǎn)換的字符串
// base:進(jìn)位制
// 返回追加后的 []byte
func AppendInt(dst []byte, i int64, base int) []byte

func main() {
    b := make([]byte, 0)
    b = strconv.AppendInt(b, -2048, 16)
    fmt.Printf("%s", b) // -800
}

int64到string

// FormatUint 將 int 型整數(shù) i 轉(zhuǎn)換為字符串形式
// base:進(jìn)位制(2 進(jìn)制到 36 進(jìn)制)
// 大于 10 進(jìn)制的數(shù)屎债,返回值使用小寫字母 'a' 到 'z'
func FormatInt(i int64, base int) string

func main() {
    i := int64(-2048)
    fmt.Println(strconv.FormatInt(i, 2))  // -100000000000
    fmt.Println(strconv.FormatInt(i, 8))  // -4000
    fmt.Println(strconv.FormatInt(i, 10)) // -2048
    fmt.Println(strconv.FormatInt(i, 16)) // -800
    fmt.Println(strconv.FormatInt(i, 36)) // -1kw
}  

int64到time(將納秒轉(zhuǎn)time)

tt := time.Unix(0,1515049539324129700) //將納秒轉(zhuǎn)換為 time 類型
fmt.Println(tt.String())

int64到time(將毫秒轉(zhuǎn)time)

tt := time.Unix(0,毫秒*1e6) //將納秒轉(zhuǎn)換為 time 類型
fmt.Println(tt.String())

int64到time(將秒轉(zhuǎn)time)

tt := time.Unix(1136214245,0) //將秒轉(zhuǎn)換為 time 類型
fmt.Println(tt.String())

Float

Float到string

// FormatFloat 將浮點(diǎn)數(shù) f 轉(zhuǎn)換為字符串值
// f:要轉(zhuǎn)換的浮點(diǎn)數(shù)
// fmt:格式標(biāo)記(b仅政、e垢油、E盆驹、f、g滩愁、G)
// prec:精度(數(shù)字部分的長(zhǎng)度躯喇,不包括指數(shù)部分)
// bitSize:指定浮點(diǎn)類型(32:float32、64:float64)
//
// 格式標(biāo)記:
// 'b' (-ddddp±ddd硝枉,二進(jìn)制指數(shù))
// 'e' (-d.dddde±dd廉丽,十進(jìn)制指數(shù))
// 'E' (-d.ddddE±dd,十進(jìn)制指數(shù))
// 'f' (-ddd.dddd妻味,沒(méi)有指數(shù))
// 'g' ('e':大指數(shù)正压,'f':其它情況)
// 'G' ('E':大指數(shù),'f':其它情況)
//
// 如果格式標(biāo)記為 'e'责球,'E'和'f'焦履,則 prec 表示小數(shù)點(diǎn)后的數(shù)字位數(shù)
// 如果格式標(biāo)記為 'g','G'雏逾,則 prec 表示總的數(shù)字位數(shù)(整數(shù)部分+小數(shù)部分)
func FormatFloat(f float64, fmt byte, prec, bitSize int) string

f := 100.12345678901234567890123456789
fmt.Println(strconv.FormatFloat(f, 'b', 5, 32))
// 13123382p-17
fmt.Println(strconv.FormatFloat(f, 'e', 5, 32))
// 1.00123e+02
fmt.Println(strconv.FormatFloat(f, 'E', 5, 32))

將float轉(zhuǎn)string并將結(jié)果追加到尾部

// AppendFloat 將浮點(diǎn)數(shù) f 轉(zhuǎn)換為字符串值嘉裤,并將轉(zhuǎn)換結(jié)果追加到 dst 的尾部
// 返回追加后的 []byte
func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte

func main() {
    f := 100.12345678901234567890123456789
    b := make([]byte, 0)
    b = strconv.AppendFloat(b, f, 'f', 5, 32)
    b = append(b, " "...)
    b = strconv.AppendFloat(b, f, 'e', 5, 32)
    fmt.Printf("%s", b) // 100.12346 1.00123e+0
}

Uint

Uint到string

// FormatUint 將 uint 型整數(shù) i 轉(zhuǎn)換為字符串形式
// base:進(jìn)位制(2 進(jìn)制到 36 進(jìn)制)
// 大于 10 進(jìn)制的數(shù),返回值使用小寫字母 'a' 到 'z'
func FormatUint(i uint64, base int) string

func main() {
    i := uint64(2048)
    fmt.Println(strconv.FormatUint(i, 2))  // 100000000000
    fmt.Println(strconv.FormatUint(i, 8))  // 4000
    fmt.Println(strconv.FormatUint(i, 10)) // 2048
    fmt.Println(strconv.FormatUint(i, 16)) // 800
    fmt.Println(strconv.FormatUint(i, 36)) // 1kw
}

將 uint 型整數(shù) i 轉(zhuǎn)換為字符串形式栖博,并追加到 dst 的尾部

// AppendUint 將 uint 型整數(shù) i 轉(zhuǎn)換為字符串形式屑宠,并追加到 dst 的尾部
// i:要轉(zhuǎn)換的字符串
// base:進(jìn)位制
// 返回追加后的 []byte
func AppendUint(dst []byte, i uint64, base int) []byte

func main() {
    b := make([]byte, 0)
    b = strconv.AppendUint(b, 2048, 16)
    fmt.Printf("%s", b) // 800
}

bool

bool到string

fmt.Println(strconv.FormatBool(0 < 1)) // true
fmt.Println(strconv.FormatBool(0 > 1)) // false

將bool轉(zhuǎn)string并將結(jié)果追加到尾部

// AppendBool 將布爾值 b 轉(zhuǎn)換為字符串 "true" 或 "false"
// 然后將結(jié)果追加到 dst 的尾部,返回追加后的 []byte
func AppendBool(dst []byte, b bool) []byte

func main() {
    rst := make([]byte, 0)
    rst = strconv.AppendBool(rst, 0 < 1)
    fmt.Printf("%s\n", rst) // true
    rst = strconv.AppendBool(rst, 0 > 1)
    fmt.Printf("%s\n", rst) // truefalse
}   

time

獲取納秒值

na:=time.Now().UnixNano()

獲取毫秒值

na:=time.Now().UnixNano()//獲取時(shí)間戳包含納秒
fmt.Println(na / 1e6) //納秒轉(zhuǎn)毫秒
fmt.Println(na / 1e9) //納秒轉(zhuǎn)秒

獲取秒值

miao:=time.Now().Unix()

時(shí)間轉(zhuǎn)string

time.Now().Format("2006-01-02 15:04")

年月日時(shí)分秒轉(zhuǎn)time

the_time := time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local)
unix_time := the_time.Unix()
fmt.Println(unix_time)

interface

與基本類型轉(zhuǎn)換

func main() {
    //var i interface{} = "TT"
    var i interface{} = 77
    value, ok := i.(int)
    if ok {
        fmt.Printf("類型匹配int:%d\n", value)
    } else {
        fmt.Println("類型不匹配int\n")
    }
    if value, ok := i.(int); ok {
        fmt.Println("類型匹配整型:%d\n", value)
    } else if value, ok := i.(string); ok {
        fmt.Printf("類型匹配字符串:%s\n", value)
    }
}

斷言的使用

func echoArray(a interface{}){
    b,_:=a.([]int)//通過(guò)斷言實(shí)現(xiàn)類型轉(zhuǎn)換
    for _,v:=range b{
        fmt.Print(v," ")
        }
    fmt.Println()
    return
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仇让,一起剝皮案震驚了整個(gè)濱河市典奉,隨后出現(xiàn)的幾起案子躺翻,更是在濱河造成了極大的恐慌,老刑警劉巖卫玖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件获枝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡骇笔,警方通過(guò)查閱死者的電腦和手機(jī)省店,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)笨触,“玉大人懦傍,你說(shuō)我怎么就攤上這事÷樱” “怎么了粗俱?”我有些...
    開(kāi)封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)虚吟。 經(jīng)常有香客問(wèn)我寸认,道長(zhǎng),這世上最難降的妖魔是什么串慰? 我笑而不...
    開(kāi)封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任偏塞,我火速辦了婚禮,結(jié)果婚禮上邦鲫,老公的妹妹穿的比我還像新娘灸叼。我一直安慰自己,他們只是感情好庆捺,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布古今。 她就那樣靜靜地躺著,像睡著了一般滔以。 火紅的嫁衣襯著肌膚如雪捉腥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天你画,我揣著相機(jī)與錄音抵碟,去河邊找鬼。 笑死撬即,一個(gè)胖子當(dāng)著我的面吹牛立磁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剥槐,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼唱歧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起颅崩,我...
    開(kāi)封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤几于,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沿后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體沿彭,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年尖滚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喉刘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漆弄,死狀恐怖睦裳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撼唾,我是刑警寧澤廉邑,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站倒谷,受9級(jí)特大地震影響蛛蒙,放射性物質(zhì)發(fā)生泄漏渤愁。R本人自食惡果不足惜牵祟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一猴伶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧他挎,春花似錦、人聲如沸捡需。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至饰剥,卻和暖如春殊霞,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背汰蓉。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工绷蹲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祝钢。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蜒什,于是被迫代替她去往敵國(guó)和親疤估。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灾常,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 生成MD5字符串 生成UUID 方法一岗憋、自己寫 方法二、 方法三仔戈、 方法四拧廊、 若使用的是linux系統(tǒng)监徘,可以直接使...
    吃貓的魚0閱讀 3,442評(píng)論 0 1
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,763評(píng)論 0 38
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理凰盔,服務(wù)發(fā)現(xiàn)倦春,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法尿庐,類相關(guān)的語(yǔ)法呢堰,內(nèi)部類的語(yǔ)法抄瑟,繼承相關(guān)的語(yǔ)法枉疼,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,598評(píng)論 18 399
  • 關(guān)系 一靜之 現(xiàn)在的世界之所以失去了精彩 和巫婆的消失很有關(guān)系 巫婆的消失 又和森林的消失很有關(guān)系 森林的消失 又...
    阿緣閱讀 212評(píng)論 0 0