首页 > 其他分享 >cast类型转换库

cast类型转换库

时间:2025-01-14 20:23:38浏览次数:1  
标签:类型转换 map string fmt cast Println interface

目录

cast类型转换库

介绍文档

https://darjun.github.io/2020/01/20/godailylib/cast/

cast.ToString/cast.ToInt

先安装:
go get github.com/spf13/cast

后使用:
package main

import (
  "fmt"

  "github.com/spf13/cast"
)

func main() {
  // ToString
  fmt.Println(cast.ToString("leedarjun"))        // leedarjun
  fmt.Println(cast.ToString(8))                  // 8
  fmt.Println(cast.ToString(8.31))               // 8.31
  fmt.Println(cast.ToString([]byte("one time"))) // one time
  fmt.Println(cast.ToString(nil))                // ""

  var foo interface{} = "one more time"
  fmt.Println(cast.ToString(foo))                // one more time

  // ToInt
  fmt.Println(cast.ToInt(8))      // 8
  fmt.Println(cast.ToInt(8.31))   // 8
  fmt.Println(cast.ToInt("8"))    // 8
  fmt.Println(cast.ToInt(true))   // 1
  fmt.Println(cast.ToInt(false))  // 0
  
  var eight interface{} = 8
  fmt.Println(cast.ToInt(eight))  // 8
  fmt.Println(cast.ToInt(nil))    // 0
}

其他高级用法

转时间cast.ToDuration/cast.ToTime

//cast.ToTime转时间
now := time.Now()
timestamp := 1579615973
timeStr := "2020-01-21 22:13:48"

fmt.Println(cast.ToTime(now))       // 2020-01-22 06:31:50.5068465 +0800 CST m=+0.000997701
fmt.Println(cast.ToTime(timestamp)) // 2020-01-21 22:12:53 +0800 CST
fmt.Println(cast.ToTime(timeStr))   // 2020-01-21 22:13:48 +0000 UTC

//cast.ToDuration 转时间
d, _ := time.ParseDuration("90s")
d2, _ := time.ParseDuration("90.1m10s")
ns := 30000
strWithUnit := "130s"
strWithoutUnit := "130"

fmt.Println(cast.ToDuration(d))               // 1m30s
fmt.Println(cast.ToDuration(d2))               // 1h30m16s
fmt.Println(cast.ToDuration(ns))              // 30µs
fmt.Println(cast.ToDuration(strWithUnit))     // 2m10s
fmt.Println(cast.ToDuration(strWithoutUnit))  // 130ns

转切片cast.ToIntSlice/cast.ToStringSlice

sliceOfInt := []int{1, 3, 7}
arrayOfInt := [3]int{8, 12}
// ToIntSlice
fmt.Println(cast.ToIntSlice(sliceOfInt))  // [1 3 7]
fmt.Println(cast.ToIntSlice(arrayOfInt))  // [8 12 0]

sliceOfInterface := []interface{}{1, 2.0, "darjun"}
sliceOfString := []string{"abc", "dj", "pipi"}
stringFields := " abc  def hij   "
any := interface{}(37)
// ToStringSliceE
fmt.Println(cast.ToStringSlice(sliceOfInterface))  // [1 2 darjun]
fmt.Println(cast.ToStringSlice(sliceOfString))     // [abc dj pipi]
fmt.Println(cast.ToStringSlice(stringFields))      // [abc def hij]
fmt.Println(cast.ToStringSlice(any))               // [37]

转为map[string]Type类型

如果是map[string]string,不用转换,直接返回;
如果是map[string]interface{},将每个值转为string存入新的 map,最后返回新的 map;
如果是map[interface{}]string,将每个键转为string存入新的 map,最后返回新的 map;
如果是map[interface{}]interface{},将每个键和值都转为string存入新的 map,最后返回新的 map;
如果是string类型,cast将它看成一个 JSON 串,解析这个 JSON 到map[string]string,然后返回结果;
其他情况,返回错误。
m1 := map[string]string{
  "name": "darjun",
  "job":  "developer",
}

m2 := map[string]interface{}{
  "name": "jingwen",
  "age":  18,
}

m3 := map[interface{}]string{
  "name": "pipi",
  "job":  "designer",
}

m4 := map[interface{}]interface{}{
  "name": "did",
  "age":  29,
}
jsonStr := `{"name":"bibi", "job":"manager"}`

fmt.Println(cast.ToStringMapString(m1))      // map[job:developer name:darjun]
fmt.Println(cast.ToStringMapString(m2))      // map[age:18 name:jingwen]
fmt.Println(cast.ToStringMapString(m3))      // map[job:designer name:pipi]
fmt.Println(cast.ToStringMapString(m4))      // map[age:29 name:did]
fmt.Println(cast.ToStringMapString(jsonStr)) // map[job:manager name:bibi]

标签:类型转换,map,string,fmt,cast,Println,interface
From: https://www.cnblogs.com/guyouyin123/p/18671503

相关文章

  • C# 类型转换 as、is、括号强转之间的区别
    文章目录1、括号强制类型转换2、as运算符3、实例在C#中,as和强制类型转换(如:(T)Value)的主要区别在于它们处理类型转换不成功时的行为和应用场景1.括号强制类型转换使用语法:Typevariable=(Type)Expression;当你确定Expression运行时可以安全的转换为目标Type类型时,使用......
  • day02-类型转换、运算符-cnblog
    day02——数据类型、运算符小伙伴们,又是元气满满的一天,今天继续开干!!!一、数据的表示详解昨天我们学习了变量,我们知道变量可以用来记录数据的。那么数据在计算机底层是以什么形式表示的呢?下面我们就学习一下数据在计算机中的底层原理。1.1整数在计算机中的存储原理其实任何数......
  • C++强制类型转换
    目录一.C语言类型转换1.自动类型转换2.强制类型转换二.C++强制类型转换1. static_cast2.const_cast3.reinterpret_cast4.dynamic_cast一.C语言类型转换1.自动类型转换C/C++中均提供自动类型转化,适用于部分内置类型的互相转换,语法格式如下:目标类型b = a;......
  • 【C++】特殊类设计和C++的类型转换
    ......
  • C++编程基础:类型转换四式速记const_cast,dynamic_cast,reinterpret_cast,static_cast
    C++编程就应该使用C++风格的转换,不要再使用不安全的C风格的转换方法了。这里先给一个C++编程风格的类型转换四式速记打油诗,帮大家记忆其用法:C++强制转换妙,四类各有其诀窍。const_cast用途巧,常量限制可取消,const属性轻松搞,函数参数常需要。dynamic_cast专长显,继承体系......
  • 在 Python 中,如何将日期时间类型转换为字符串?
    在Python中,将日期时间类型转换为字符串可以通过以下几种方式来实现:方法一:使用strftime()方法fromdatetimeimportdatetimenow=datetime.now()formatted_string=now.strftime("%Y-%m-%d%H:%M:%S")print(formatted_string)  strftime()方法可以根据指定的格......
  • JAVA-Day 04:数据类型转换
    类型转换(Typeconversion)byte,short,char—>int—>long—>float—>doouble低---------------------------------------------------------------------->高注意:运算中,不同类型的数据先转化为同一类型,然后进行计算。类型转换(Typeconversion)分为强制转换和自动转换1.强制......
  • 将一个浮点数或任何其他类型的值赋给 unsigned char 类型的变量时,C语言进行类型转换
    C语言中,unsignefcharTemp_Val;Temp_Val=(unsignefchar)rd_temperature();若rd_temperature()函数返回51.7,则Temp_Val等于多少?在C语言中,unsignedchar 类型通常用于存储0到255之间的无符号整数。当你将一个浮点数或任何其他类型的值赋给 unsignedchar 类型的变量时,C语言......
  • C++ 中将 float 类型转换为 std::string
    在C++中,可以使用多种方法将 float 类型转换为 std::string 类型。以下是常用的几种方法:方法1:std::to_string (C++11及以上)这是最简单的方法之一,直接使用 std::to_string。#include<iostream>#include<string>intmain(){floatnum=123.456f;std::......
  • 4.3 类型转换实例
    【例4.5】将图像从BGR模式转换为RGB模式。importcv2importnumpyasnplena=cv2.imread("/Users/zhaofeier/Desktop/lenacolor.png")rgb=cv2.cvtColor(lena,cv2.COLOR_BGR2RGB)cv2.imshow("lena",lena)cv2.imshow("rgb",rgb)cv2.waitKey()......