Golang interface赋值与取值的实例

bs := make(map[string]string)
bs["name"] = "张三"
bs["age"]  = "12"
var student interface{}

student = bs
a := student.(map[string]string)   //将interface转换为map类型,如果不确定数据类型的时候可以使用类型断言,确定其类型之后再转换为相对应的类型,然后取值

fmt.Printf("学生的姓名是: \n %v", a["name"])   //结果: 张三

fmt.Printf("学生的数据是: \n %v", student)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Golang 中使用 MySQL 数据库时,可以使用 `interface{}` 类型的变量来获取查询结果。以下是一个示例代码: ```go package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database") if err != nil { panic(err.Error()) } defer db.Close() rows, err := db.Query("SELECT name, age FROM users") if err != nil { panic(err.Error()) } defer rows.Close() cols, err := rows.Columns() if err != nil { panic(err.Error()) } values := make([]interface{}, len(cols)) valuePtrs := make([]interface{}, len(cols)) for rows.Next() { for i, _ := range cols { valuePtrs[i] = &values[i] } err = rows.Scan(valuePtrs...) if err != nil { panic(err.Error()) } for i, col := range cols { val := values[i] fmt.Printf("%s: %v\n", col, val) } } err = rows.Err() if err != nil { panic(err.Error()) } } ``` 在上述代码中,使用 `rows.Columns()` 方法获取查询结果的列名,使用 `make()` 方法创建一个 `interface{}` 类型的变量切片 `values`,用于存储查询结果。然后,使用 `make()` 方法再创建一个 `interface{}` 类型的指针切片 `valuePtrs`,用于存储 `values` 切片中每个元素的地址。在循环中,使用 `rows.Scan()` 方法将查询结果赋值给 `valuePtrs` 切片中对应的指针,然后通过循环遍历 `cols` 和 `values` 切片,获取每个查询结果的列名和值。 使用 `interface{}` 类型的变量获取查询结果的好处是可以灵活地处理不同类型的查询结果,但是需要注意的是,在使用 `interface{}` 类型的变量时,需要进行类型断言操作,避免出现类型错误的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值