当不同的数据类型相互操作的时候,就需要类型转换,Go 的数据类型转换还是比较简单的。

数据类型转换包含显式和隐式两类,隐式的一般是大的数据类型到小的类型进行转换,不会有精度丢失的问题。否则就需要进行显式转换。

转换的场景包括:有数学计算、赋值、函数调用、数据库交互、JSON 编解码和接口类型转换。

下面是各个场景的一些代码示例:

1、数学计算

func TestArithmeticOperations(t *testing.T) {
    var length int = 10
    var Width float32 = 5.5
    result := float32(length) * Width
    t.Logf("Result: %f\n", result)
}

2、赋值

func TestAssignValue(t *testing.T) {
    var a int = 10
    result := strconv.Itoa(a)
    t.Logf("Result: %s\n", result)
}

3、函数调用

func processFloat64(f float64) {
    // do something with f
} func TestFunctionCall(t *testing.T) {
    var input int = 10
    processFloat64(float64(input))
}

4、数据库交互

var quantity int = 10
var price float64 = 24.99 // Database query expecting quantity as float64
db.Query("INSERT INTO products (quantity, price) VALUES (?, ?)", float64(quantity), price)

5、JSON 编码和解码

type Person struct {
    Name string `json:"name"`
}
func TestEncodingAndDecoding(t *testing.T) {
    person := Person{
        Name: "John",
    }
    // Encode the person struct to JSON
    jsonData, err := json.Marshal(person)
    if err != nil {
        t.Errorf("Error encoding person struct to JSON: %v", err)
    }
    t.Logf("JSON data: %s", jsonData)
   
    // Decode the JSON data back to a person struct
    var decodedPerson Person
    err = json.Unmarshal(jsonData, &decodedPerson)
    if err != nil {
        t.Errorf("Error decoding JSON data to person struct: %v", err)
    }
    t.Logf("Decoded person name: %v", decodedPerson.Name)
}

6、接口类型转换

将自定义类型转换为接口

type Share interface {
Area() float64
} type Rectangle struct {
Width float64
Height float64
} type Circle struct {
Radius float64
} func (r Rectangle) Area() float64 {
return r.Width * r.Height
} func (c Circle) Area() float64 {
return 3.14159 * c.Radius * c.Radius
}
func TestInterfaceConversion(t *testing.T) {
r := Rectangle{Width: 10, Height: 5}
c := Circle{Radius: 3}
s := []Share{r, c}
for _, item := range s {
area := item.Area()
t.Logf("Area: %f\n", area)
}
}

Over!

Go 语言的数据类型转换有哪些?的更多相关文章

  1. C语言关于数据类型转换

    自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生. 1) 将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如: ; ...

  2. C语言:数据类型转换 自动转换 强制转换

    数据类型转换就是将数据(变量.数值.表达式的结果等)从一种类型转换为另一种类型. 自动类型转换 自动类型转换就是编译器默默地.隐式地.偷偷地进行的数据类型转换,这种转换不需要程序员干预,会自动发生.1 ...

  3. c语言,数据类型转换

    在执行算术运算时,计算机比C语言的限制更多.为了让计算机执行算术运算,通常要求操作数有相同的大小(即位的数量相同),并且要求存储的方式也相同.计算机可能可以直接将两个16位整数相加,但是不能直接将16 ...

  4. C语言中数据类型转换的学习

    1. 整型和枚举类型数据的转换 测试代码如下: #include <stdio.h> typedef enum _E_TYPE_T {     E_TYPE_1 = -1,     E_T ...

  5. c语言常用数据类型转换整理

    你要发送原始数据流 还是 格式化输出? 如果是格式化 按原子说的 ,用sprintf / printf; 如果发送原始内存数据流, 可按下面发送, 发送 #define BYTE0(pointer) ...

  6. C语言:数据类型转换

    #include <stdio.h> main() { printf("%d\n",sizeof(1)); printf("%d\n",sizeof ...

  7. C语言中强制数据类型转换(转)

    原文地址不详 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128-127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0-255(有些 ...

  8. 使用变量 数据类型转换 逻辑控制语句(begin ...end; case...end; if...else; while)

    一:变量 变量分为局部变量和全局变量  (全局变量是系统自定的,是不可手动给值的,若想自己定义全局变量可考虑创建全局临时表!) 局部变量的定义:  declare @变量名  数据类型 (局部变量只能 ...

  9. c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast

    c++ 数据类型转换: static_cast dynamic_cast reinterpret_cast const_cast  [版权声明]转载请注明出处 http://www.cnblogs.c ...

  10. JavaScript数据类型转换

    原文转自:http://javascript.ruanyifeng.com/grammar/conversion.html#rd JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予 ...

随机推荐

  1. python 爬取博客访问量

    一.代码 """ Version: Python3.5 Author: OniOn Site: http://www.cnblogs.com/TM0831/ Time: ...

  2. Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版

    Deepseek卡的问题已经有几周了,还有同学没有解决这个问题? 今天就来教大家如何白嫖阿里云的Deepseek-R1满血版,新用户享受100万token额度,相当的富裕,可以随便用了.并且还配用AP ...

  3. Thymeleaf遍历选中多个复选框

    使用场景:用户角色一对多关联关系 <!-- roleList:所有角色信息 :userRoleList:用户已有角色id列表--> <input th:each="role ...

  4. Wifi - 查看连接过的Wifi的密码

    使用管理员身份打开命令提示符 Microsoft Windows [版本 10.0.22621.1702] (c) Microsoft Corporation.保留所有权利. C:\Windows\S ...

  5. 【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(9)

    1.问题描述: 通过push token向鸿蒙手机推送一条通知,收到通知后,通知右侧不展示图片. 解决方案: 检查一下是否存在图片风控:https://developer.huawei.com/con ...

  6. sql server 使用sql语句导出二进制文件到本地磁盘

    sp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1; ...

  7. 数据挖掘 | 数据隐私(2) | 差分隐私 | 数据重构化攻击(Reconstruction Attacks)

    L2-Reconstruction Attacks 本节课的目的在于正式地讨论隐私,但是我们不讨论算法本身有多隐私,取而代之去讨论一个算法隐私性有多么的不可靠.并且聚焦于 Dinur 与 Nissim ...

  8. springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行解决方法

    问题描述:springboot本地运行正常,打包jar包上传Linux服务器后报错,无法正常运行 说明:以下两种打包方式均在IDEA软件内完成,上传服务器使用宝塔面板管理 1.第一次打包方式: 设置完 ...

  9. FastAPI路由:微服务架构下的路由艺术与工程实践 🌐

    title: FastAPI路由专家课:微服务架构下的路由艺术与工程实践 date: 2025/3/4 updated: 2025/3/4 author: cmdragon excerpt: 用API ...

  10. 如何用Forest方便快捷地在SpringBoot项目中对接DeepSeek

    ​ 一. 环境要求 JDK 8 / 17 SpringBoot 2.x / 3.x Forest 1.6.4+ Fastjson2 依赖配置 除了 SpringBoot 和 Lombok 等基础框架之 ...