Go语言中的类型

Go语言是一种静态类型的编程语言,这意味着每个变量和表达式在编译时都有确定的类型。Go提供了丰富的内置类型,包括基本数据类型、复合数据类型和引用类型等。本文将详细介绍Go中的各种类型,并提供实例说明。

基本数据类型

布尔型(bool)

布尔型有两个可能的值:truefalse。它们是未类型的布尔值。

var isTrue bool = true
var isFalse bool = false

整数型

Go提供了不同大小的整数类型,包括有符号和无符号整数。

  • 无符号整数类型:uint8, uint16, uint32, uint64
  • 有符号整数类型:int8, int16, int32, int64
var u8 uint8 = 255
var i8 int8 = -128

浮点型

浮点型包括单精度和双精度浮点数。

  • float32:IEEE 754 32位浮点数
  • float64:IEEE 754 64位浮点数
var f32 float32 = 3.14
var f64 float64 = 3.1415926

复数型

Go还支持复数类型,包括单精度和双精度。

  • complex64:实部和虚部都是float32
  • complex128:实部和虚部都是float64
var c64 complex64 = complex(3, 4)
var c128 complex128 = complex(3.1415926, 2.71828)

字符串型(string)

字符串是由8位字节组成的不可变序列,通常用于表示UTF-8编码的文本。

var str string = "Hello, Go!"

复合数据类型

数组(array)

数组是固定长度的相同类型元素的序列。

var arr [5]int = [5]int{1, 2, 3, 4, 5}

切片(slice)

切片是对数组的抽象,提供了可变长度的序列。

var slice []int = make([]int, 5)
copy(slice, arr[:])

映射(map)

映射是键值对的集合,键必须是可比较的类型。

var m map[string]int = map[string]int{"one": 1, "two": 2}

通道(channel)

通道用于在不同的goroutine之间安全地传递数据。

var ch chan int = make(chan int)
go func() {ch <- 42
}()
v := <-ch

引用类型

指针(pointer)

指针存储了某个变量的内存地址。

var i int = 42
var p *int = &i

接口(interface)

接口是一组方法的集合,任何实现了这些方法的类型都实现了该接口。

type Reader interface {Read(p []byte) (n int, err error)
}

结构体(struct)

结构体是字段的集合,字段可以是不同的类型。

type Point struct {X, Y float64
}
var p Point
p.X = 1.0
p.Y = 2.0

特殊类型

空类型(nil)

nil是指针、通道、函数、接口、映射、切片的零值。

var p *int = nil

错误类型(error)

error是一个内建的接口类型,用于表示错误。

var err error = nil

任意类型(any)

anyinterface{}的别名,可以存储任何类型的值。

var v any = "Hello"
fmt.Println(v)

可比较类型(comparable)

comparable是一个内建的接口,所有可比较的类型都实现了这个接口。

实例演示

下面是一个简单的实例,演示了如何在Go中使用这些类型。

package mainimport ("fmt""math"
)func main() {// 基本数据类型var isTrue bool = truevar i8 int8 = -128var u16 uint16 = 65535var f64 float64 = 3.1415926var c128 complex128 = complex(3.1415926, 2.71828)var str string = "Hello, Go!"// 复合数据类型var arr [3]int = [3]int{1, 2, 3}var slice []int = arr[1:]var m map[string]int = map[string]int{"one": 1, "two": 2}var ch chan int = make(chan int)go func() {ch <- 42}()v := <-ch// 引用类型var p *int = new(int)*p = 42// 特殊类型var err error = nilvar vAny any = "Hello, any type!"// 打印结果fmt.Printf("isTrue: %v, i8: %v, u16: %v, f64: %v, c128: %v, str: %v\n", isTrue, i8, u16, f64, c128, str)fmt.Printf("slice: %v, m: %v, v: %v, p: %v, err: %v, vAny: %v\n", slice, m, v, *p, err, vAny)
}

这个实例展示了Go中各种类型的声明和使用方式。通过这个实例,你可以更好地理解Go的类型系统。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886287.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始的LeetCode-算法】3270. 求出数字答案

给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数位&#xff08;1 < …

⾃动化运维利器 Ansible-变量

⾃动化运维利器Ansible-变量 一、变量命名规则二、变量的类型2.1 全局变量2.3 剧本变量2.4 资产变量2.5 facts变量2.6 注册变量 三、变量的优先级 按顺序食用&#xff0c;口味更佳 ( 1 ) ⾃动化运维利器Ansible-基础 ( 2 ) ⾃动化运维利器 Ansible-Playbook ( 3 ) ⾃动化运维利…

蓝桥杯每日真题 - 第12天

题目&#xff1a;&#xff08;数三角&#xff09; 题目描述&#xff08;14届 C&C B组E题&#xff09; 解题思路&#xff1a; 给定 n 个点的坐标&#xff0c;计算其中可以组成 等腰三角形 的三点组合数量。 核心条件&#xff1a;等腰三角形的定义是三角形的三条边中至少有…

项目技术栈-解决方案-注册中心

项目技术栈-解决方案-注册中心 ZookeeperEureka、Nacos、Consul和Etcd参考文章 服务注册中心&#xff08;Registry&#xff09;&#xff1a;用于保存 RPC Server 的注册信息&#xff0c;当 RPC Server 节点发生变更时&#xff0c;Registry 会同步变更&#xff0c;RPC Client 感…

uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置

uniapp适配暗黑模式配置 目录 uniapp适配暗黑模式配置setUIStyleDarkMode 适配app-plus manifest.json配置theme.json配置pages.json配置页面切换代码实现同步手机暗黑配置额外适配 参考官方文档&#xff1a;https://uniapp.dcloud.net.cn/tutorial/darkmode.html 主要用到api…

Wireshark中的length栏位

注&#xff1a;Ethernet II的最小data length为46&#xff0c;如果小于&#xff0c;会补全到46. 1.指定网卡抓取的&#xff0c;链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

Spring 4.3 源码导读

Spring Framework 是一个功能强大的开源框架&#xff0c;广泛用于企业级 Java 应用程序开发。Spring 4.3 是一个成熟的版本&#xff0c;提供了丰富的功能和模块。以下是对 Spring 4.3 源码的一些关键部分的导读&#xff0c;帮助你更好地理解其架构和设计理念。 1. 源码获取 从…

前端开发迈向全栈之路:规划与技能

一、前端开发与全栈开发的差异 前端开发主要负责构建和实现网页、Web 应用程序和移动应用的用户界面。其工作重点在于网页设计和布局&#xff0c;使用 HTML 和 CSS 技术定义页面的结构、样式和布局&#xff0c;同时运用前端框架和库如 React、Angular 或 Vue.js 等构建交互式和…

后端总指挥---文件接口

为了方便编写项目时前后端的连接&#xff0c;在这里引进文件接口的概念&#xff0c;通常包含以下几个部分&#xff1a; 功能请求路径请求方式传输的数据类型请求入参数据样本响应的出参响应成功后的数据样本 这样前端编程与后端编程 可以根据文件接口这个文档来分别编写前后端&…

ISUP协议视频平台EasyCVR视频设备轨迹回放平台智慧农业视频远程监控管理方案

在当今快速发展的农业领域&#xff0c;智慧农业已成为推动农业现代化、助力乡村全面振兴的新手段和新动能。随着信息技术的持续进步和城市化进程的加快&#xff0c;智慧农业对于监控安全和智能管理的需求日益增长。 视频设备轨迹回放平台EasyCVR作为智慧农业视频远程监控管理方…

通过wsl配置Qt的中文开发环境

本文列举了一些在WSL上配置Qt编译环境中遇到的一些问题及解决方案 关键词: Win10 22HUbuntu18.04xfce桌面交叉编译arm64qt / qtcreator中文输入及显示标题 安装qt,qtcreatorqt.qpa.screen: QXcbConnection: Could not connect to displayld: cannot find -lGLqmake: could no…

前端web

题目&#xff1a;制作带有下拉悬停菜单的导航栏 效果图 一、先制作菜单栏 <body> <div id"menu"> <div id"container"> <div class"item">游戏1 <div cla…

PostgreSQL 跨数据库访问

有这样的一个业务场景。有一个表对象在数据库 A 中&#xff0c;但是在同一个实例的数据库 B 中我想访问位于 A 库中的这个对象&#xff0c;那么有什么好的方法可以实现呢。 假设在数据库 cloud_test 中有如下的对象&#xff0c;现在想在数据库 cloud_health 中访问这个对象。 …

《应用概率统计》

《应用概率统计》主要有综合报告、学术论文、应用研究、应用简报、教学研究、学术活动报道、书评、新书介绍等栏目。 一、《应用概率统计》是中国数学会概率统计学会主办的全国性学术刊物&#xff0c;主要刊登概率论与数理统计的理论和应用两方面有创造性的学术论文&#xff0c…

Vue之插槽(slot)

插槽是vue中的一个非常强大且灵活的功能&#xff0c;在写组件时&#xff0c;可以为组件的使用者预留一些可以自定义内容的占位符。通过插槽&#xff0c;可以极大提高组件的客服用和灵活性。 插槽大体可以分为三类&#xff1a;默认插槽&#xff0c;具名插槽和作用域插槽。 下面…

unity3d————Resources异步加载

知识点一&#xff1a;Resources异步加载是什么&#xff1f; 在Unity中&#xff0c;资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行&#xff0c;如果加载的资源过大&#xff0c;可能会导致程序卡顿&#xff0c;因为从硬盘读取数据到内存并进行处理…

fatal error C1083: 无法打开包括文件: “stdio.h”: No such file or directory

在 Windows 上的 “终端” 里&#xff0c;对于已经执行过 cmake -S . -B build -G Ninja 的工程&#xff0c;执行了 cmake --build build出现了报错&#xff1a; fatal error C1083: 无法打开包括文件: “stdio.h”: No such file or directory 原因是&#xff0c;当前 “终端…

SpringBoot开发——Spring Boot 3.3整合RabbitMQ构建高效稳定的消息队列系统

文章目录 一、配置 RabbitMQ二、自动配置的核心组件三、发送消息至指定 Stream四、接收消息与 RabbitListener 注解五、实现自定义 RabbitListenerContainerFactory六、消息重试机制七、总 结 消息队列在分布式系统中起着至关重要的作用&#xff0c;它能够解耦系统、削峰填谷&a…

SpringBoot+Vue3实现数据可视化大屏

前端工程的地址:UserManagerFront: 数据可视化前端 (gitee.com) 效果展示&#xff0c;可以展现出来了&#xff0c;样式可能还有一些丑。 后端代码 后端主要是拿到数据并对数据进行处理&#xff0c;按照前端需要的格式进行返回即可。 import com.njitzx.entity.Student; impor…

vue3: toRef, reactive, toRefs, toRaw

vue3&#xff1a; toRef, reactive, toRefs, toRaw 扫码或者点击文字后台提问 <template><div>{{ man }}</div><hr><!-- <div>{{ name }}--{{ age }}--{{ like }}</div> --><div><button click"change">修…