go 空接口类型的变量的使用

 基础语法  2023-07-17  admin  1803  2434

// interface{} 在 Go 中是一个特殊的类型,表示任何类型,类似于 C# 中的 object 类型或 Java 中的 Object 类型。

// 它可以接收任何类型的值,但如果我们需要使用其原始类型的值,我们需要进行类型断言。

package main

import (
	"fmt"
)

func main() {
	// 定义一个空接口类型的变量 可以给空接口类型的变量赋任何类型的值
	var id interface{}
	id = "123"
	fmt.Printf("%T \t %v \n", id, id)

	// 使用类型断言来获取原始类型的值
	var uid string
	if value, ok := id.(string); ok {
		uid = value
	}
	fmt.Printf("%T \t %v \n", uid, uid)

	id = 123.456
	var fid float64
	if value, ok := id.(float64); ok {
		fid = value
	}
	fmt.Printf("%T \t %v \n", fid, fid)

	switchVal(123456.1234)
	switchVal("123456.1234")
	switchVal(true)
	switchVal(123)
}

// 使用 switch 语句进行类型断言
func switchVal(val interface{}) {
	switch v := val.(type) {
	case string:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case int:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case int8:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case int32:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case int64:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case float32:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case float64:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	case bool:
		value := v
		fmt.Printf("%T \t %v \n", value, value)
	default:
		fmt.Printf("%T \t %v \n", val, val)
	}
}


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

转载必须注明出处:

go 空接口类型的变量的使用 —— code.cent123.com

相关推荐


go 的 Pool池对象 sync.Pool 创建mysql连接池

//在这个例子中,我们创建了一个sync.Pool,其中包含一个New函数,该函数创建一个MySQL连接 //在someFunction中,我们使用dbPool.Get()从池中获取一个MySQL连接 //然后我们使用连接进行一些操作,最后使用dbPool.Put()将连接放回池中 //我们可以通过设置dbPool的大小来初始化连接池中的连接数量 //例如,如果我们想要初始化10个连接,我

go 的 Pool池对象-sync.Pool

packagemain import( "fmt" "strconv" "sync" ) //在go中,原生的池化数据结构为sync.Pool,有三个方法: //New字段为一个方法,定义为func()interface{},在新建Pool时,定义好New字段,以供后续从池中获取对象时,如果当前池中无对象,则使

go 的基本数据类型,值类型 引用类型

类型长度(字节)默认值说明bool1false一个字节,值是true或者false,不可以用0或者1表示byte10byte占用8位,一个字节,相当于uint8,不带符号位rune40Unicode Code Point, int32等价于int32类型。int, uint4或8032 或 64 位,根据平台不同是32位或者64位int8, uint810-128 ~ 127, 0 ~ 255,b

写了 30 多个 Go 常用文件操作的示例,收藏这一篇就够了

原文:收藏!30 多个 Go 常用文件操作的示例 (qq.com)原文:写了 30 多个 Go 常用文件操作的示例,收藏这一篇就够了 (qq.com)Go官方提供的文件操作标准库分散在os、ioutil等多个包中,里面有非常多的方法涵盖了文件操作的所有场景,不过因为我平时开发过程中需要直接操作文件的场景其实并不多,在加上 Go 标准库的文档太难搜索,每次遇到要使用文件函数时都是去 Google 查