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 < …

蓝桥杯每日真题 - 第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…

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

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

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

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

前端web

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

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+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">修…

《网络硬件设备完全技术宝典》

《网络硬件设备完全技术宝典》 网卡 集线器 交换机 路由器 双绞线 光缆 无线接入点AP 交换机技术与选择策略 冗余链路技术 由于物理链路和网络模块的损坏都将导致网络链路的失败&#xff0c;因此两个设备之间&#xff0c;特别是核心交换机与汇聚交换机之间的单链路…

Win10下使用Anaconda安装GPU版本PyTorch

PyTorch是一个开源机器学习框架&#xff0c;最初来自Meta Ai。如果你想研究人工智能或从事人工智能项目方面的工作&#xff0c;那么在本地机器上使用PyTorch设置开发环境对于许多项目来说都是必不可少的。GPU&#xff08;图形处理单元&#xff09;是一种专用处理器&#xff0c;…

灰狼优化算法

灰狼优化算法&#xff08;Grey Wolf Optimizer&#xff0c;GWO&#xff09;是一种群智能优化算法&#xff0c;由澳大利亚格里菲斯大学学者Mirjalili等人于2014年提出。该算法灵感来源于灰狼群体的捕食行为&#xff0c;通过模拟灰狼的社会等级分层、跟踪、包围和攻击猎物等步骤来…

Chromium 中sqlite数据库操作演示c++

本文主要演示sqlite数据库 增删改查创建数据库以及数据库表的基本操作&#xff0c;仅供学习参考。 一、sqlite数据库操作类封装&#xff1a; sql\database.h sql\database.cc // Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-sty…

Docker部署Kafka集群,增加 SASL_SSL认证,并集成到Spring Boot,无Zookeeper版

1&#xff0c;准备好Kafka 镜像包&#xff1a; bitnami/kafka:3.9.0 镜像资源包 2&#xff0c;准备好kafka.keystore.jks 和 kafka.truststore.jks证书 具体操作可参考&#xff1a; Docker部署Kafka SASL_SSL认证&#xff0c;并集成到Spring Boot-CSDN博客 3&#xff0c;配置…

apipost下载安装教程、脚本详细使用教程

目录 apipost脚本使用教程 缘由&#xff1a; 实现流程&#xff1a; 1、设置接口需要的URL&#xff1a; 2、boby: 3、预执行操作&#xff1a; 4、断言 5、执行结果&#xff1a; 什么是ApiPost&#xff1f; 下载以及安装&#xff1a; apipost使用文档介绍&#xff1a;…

Python Web 应用开发基础知识

Python Web 应用开发基础知识 引言 随着互联网的快速发展&#xff0c;Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言&#xff0c;已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识&#xff0c;包括常用框架、基…