首页 > 其他分享 >Go 语言的数据类型转换有哪些?

Go 语言的数据类型转换有哪些?

时间:2024-10-22 17:42:26浏览次数:1  
标签:类型转换 struct float64 哪些 var JSON person func Go

当不同的数据类型相互操作的时候,就需要类型转换,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!

标签:类型转换,struct,float64,哪些,var,JSON,person,func,Go
From: https://www.cnblogs.com/denglei1024/p/18493406

相关文章

  • go1.18版本下 beego/bee安装无法生成exe问题已解决
    转自: https://www.cnblogs.com/leijiangsheng/p/17392795.html我原来的项目是教育学习APP使用gin框架,很多东西都是自己原来实现的。最近开发小程序,需要重新独立后台,又重新找了下go框架研究了下,beego确实是个好框架,至少项目能用到的都考虑进去了。然后发现我本地装了一个下午,be......
  • Go语言net/http包源码学习
    0.前言该笔记为笔者第一次学习go的net/http包源码的时候所记,也许写的并不是很精确,希望大家多多包涵,一起讨论学习。该笔记很大程度的参考了网名为“小徐先生”的前辈所分享的博客,推荐大家可以先看一看它的博客来一起学习,我的只是照葫芦画瓢还有一些代码更新的讲解而已。当前笔者......
  • django 新型农机网站 计算机专业毕业设计源码08514
    摘 要随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于新型农机网站当然也不能排除在外,随着网络技术的不断成熟,带动了新型农机网站,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的......
  • django+mysql怎么开局
    后端开局:django+mysql思路是这篇:vue3+django+mysql实现一个简单的前后端分离的小案例-CSDN博客首先,用pycharm创建的时候我选的是anaconda3虚拟环境然后创建项目的时候选择django项目,会帮你创建好基础的东西。然后你需要在终端使用命令来创建apps文件夹。(看这篇:django创建......
  • Go语言Context包源码学习
    0前言context包作为使用go进行server端开发的重要工具,其源码只有791行,不包含注释的话预计在500行左右,非常值得我们去深入探讨学习,于是在本篇笔记中我们一起来观察源码的实现,知其然更要知其所以然。(当前使用go版本为1.22.2)1核心数据结构整体的接口实现和结构体embed图1.1Conte......
  • (开题报告)django+vuehadoop考勤系统论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容选题背景关于考勤系统的研究,现有研究主要以传统的考勤管理方式或者单一技术架构为主。在国内外,很多企业和组织已经采用了基本的考勤系统,但专门针对......
  • Features of three electronic component platforms: Findchips, JLCPCB, and ICgoodF
    Thecharacteristicsofthreeelectroniccomponentplatforms:Findchips,JLCPCB,andICgoodFindareasfollows:Findchips:Powerfulsearchanddataintegrationfunction.Itcanaggregatedatafrommajordistributors.Userscansearchforinformationonse......
  • Java 中的垃圾收集器有哪些,它们的工作原理是什么?
    在Java中,垃圾收集(GC)是自动内存管理的核心部分,它帮助开发者免于手动管理内存分配和回收,提升了开发效率和应用性能。Java中的主要垃圾收集器包括SerialGC、ParallelGC、CMS(ConcurrentMarkSweep)GC、G1(Garbage-First)GC,以及最新的ZGC(ZGarbageCollector)和Shenand......
  • (开题报告)django+vue酸奶配送管理系统的设计与实现论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于酸奶配送管理系统的研究,现有研究主要以一般性的物流配送或食品配送管理系统为主,专门针对酸奶配送管理系统的研究较少。在国内外的......
  • Django for beginner for windows
    Setupdjangoprojectstep1:createafolderforprojectandswitchtothefolderinterminal.step2:createavirtualenvironment:python-mvenvvirtual_environment_namestep3:activatethevirtualenvironment:virtual_environment_name\Scripts\acti......