golang interface 转 string、int、float64

interface{}

interface{} 接口、interface{} 类型很多人都会混淆。interface{} 类型是没有方法的接口。由于没有 implements 关键字,所以说所有的类型都至少实现了 0 个方法,所有类型都实现了空接口。这意味着,如果编写一个函数以 interface{} 值作为参数,那么你可以为该函数提供任何值。例如:

复制代码
func DoSomething(v interface{}) {
   // ...
}

第一种知道是什么类型

如果知道是什么类型的话,就可以直接转

复制代码
// 假设 v 为 string或int64或float64
func DoSomething(v interface{}) {
	string1 := v.(string)
	int1 := v.(int64)
	float1 := v.(float64)
}

第二种不知道是什么类型

这时候就可以使用类型断言,然后再转为具体类型

复制代码
func interface2Type(i interface{}) {
	switch i.(type) {
	case string:
		fmt.Println("string", i.(string))
		break
	case int:
		fmt.Println("int", i.(int))
		break
	case float64:
		fmt.Println("float64", i.(float64))
		break
	}
}
 
func main() {
	interface2Type("niuben")
	interface2Type(1122)
	interface2Type(11.22)
}

输出

复制代码
string niuben
int 1122
float64 11.22
posted @   牛奔  阅读(10772)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2019-05-26 html input file 设置文件类型
点击右上角即可分享
微信分享提示