编程笔记 Golang基础 014 数据类型概述

编程笔记 Golang基础 014 数据类型概述

  • 一、基本数据类型
  • 二、复合数据类型
  • 三、引用类型
  • 四、特殊类型
  • 小结

Go 语言的数据类型系统涵盖了基本数据类型、复合数据类型以及引用类型。

下面将对这些类型进行详细说明:

一、基本数据类型

  1. 布尔型 (bool):表示逻辑值,仅有两个可选值 truefalse

    var isTrue bool = true
    var isFalse bool = false
    
  2. 整数型

    • 有符号整数:int8、int16、int32(通常对应C中的short)、int64(通常对应C中的long long)。
    • 无符号整数:uint8(等同于byte)、uint16、uint32、uint64。
    var i int8 = -128 // 最小值为-128,最大值为127
    var u uint32 = 4294967295 // 最大值为 2^32 - 1
    
  3. 浮点型

    • float32:32位IEEE-754浮点数。
    • float64:64位IEEE-754浮点数,这是Go中默认的浮点数类型。
    var f float32 = 3.14159265 // 浮点数
    var pi float64 = math.Pi // 使用math库中的π常数
    
  4. 复数型

    • complex64:由两个32位浮点数(实部和虚部)组成。
    • complex128:由两个64位浮点数组成。
    var c complex64 = 3 + 4i // 复数
    
  5. 字符串 (string):不可变的字符序列,使用UTF-8编码。

    var s string = "Hello, World!" // 字符串
    

二、复合数据类型

  1. 数组 (array):固定长度的同类型元素集合,其长度在声明时必须确定。

    var a [5]int // 声明一个包含5个整数的数组
    
  2. 切片 (slice):动态大小的、灵活的数组视图,它不拥有底层数据,而是指向底层数组的一个片段。

    var s []int = make([]int, 0, 5) // 创建一个初始长度为0,容量为5的整数切片
    
  3. 结构体 (struct):用户自定义的数据类型,可以包含多个成员,每个成员可以是不同类型的变量。

    type Person struct {Name stringAge  int
    }
    var p Person
    p.Name = "Alice"
    p.Age = 30
    
  4. 接口 (interface):定义了一组方法签名,任何实现了这些方法的类型都实现了该接口。

    type Writer interface {Write(p []byte) (n int, err error)
    }type MyWriter struct {}
    func (w MyWriter) Write(p []byte) (n int, err error) { ... }
    

三、引用类型

  1. 指针 (pointer):存储变量内存地址的类型,允许直接操作内存中的值。

    var x int = 10
    var p *int = &x // 指针p指向变量x的地址
    *p = 20        // 通过指针修改x的值
    
  2. 函数类型 (function type):可以像其他任何类型一样声明和赋值,允许作为参数传递或从函数返回。

    func add(a, b int) int {return a + b
    }var myFunc func(int, int) int = add
    
  3. 通道 (channel):用于并发编程的通信机制,用于goroutine之间的同步和数据传输。

    ch := make(chan int) // 创建一个int类型的通道
    go func() {ch <- 42 // 向通道发送一个值
    }()
    value := <-ch // 从通道接收一个值
    
  4. 映射 (map):关联键值对的数据结构,键和值可以是任意类型。

    m := make(map[string]int)
    m["apple"] = 10
    
  5. 错误类型 (error):虽然不是内置类型,但error是一种广泛使用的接口类型,用于表示运行时错误。

四、特殊类型

  1. 空接口 (interface{}):不包含任何方法的接口,它可以容纳任何类型的值。

以上是对Go语言主要数据类型的详解。通过这些类型,开发者可以在Go程序中构建复杂的抽象,并实现高效的内存管理和类型安全。

小结

数据类型需要通过实际应用来深入掌握。在后续内容中将逐步展开。

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

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

相关文章

Javascript中var和let之间的区别

文章目录 一.变量提升(声)二.let和var的区别 区别&#xff1a; 1、var有变量提升&#xff0c;而let没有&#xff1b; 2、let不允许在相同的作用域下重复声明&#xff0c;而var允许&#xff1b; 3、let没有暂时性死区问题&#xff1b; 4、let创建的全局变量没有给window设置对应…

不同种类遥感图像汇总 !!

文章目录 前言 1、可见光遥感图像 2、全色遥感图像 3、多光谱遥感图像 4、高光谱遥感图像 5、红外遥感图像 6、激光雷达图像 7、合成孔径雷达遥感图像 前言 遥感技术是从远距离感知目标反射或自身辐射的电磁波、可见光、红外线&#xff0c;对目标进行探测和识别的技术。遥感卫…

懒汉单例设计模式与饿汉单例设计模式

单例模式即一个类确保只有一个对象,主要用于避免浪费内存 1.饿汉单例设计模式:拿到对象时,对象就早已经创建好了 public class A { private static A a new A(); private A(){ } public static A getObject(){ return a;} } 写法: 把类的构造器私有 在类中自己创建一个对…

【IOS】oc中property属性值详解

1. atomic与nonatomic atomic&#xff1a;原子属性确保属性的读取和写入操作在多线程环境中是线程安全的。这意味着&#xff0c;当一个线程正在读取或写入属性时&#xff0c;其他线程不能同时访问该属性。虽然这提供了线程安全性&#xff0c;但它也引入了性能开销&#xff0c;…

【JAVA高级面试题】运用锁机制实现一个自定义的阻塞队列

文章目录 前言实战演示写在最后 前言 前几天看见一个高级Java面试题&#xff0c;我觉得很有代表意义。既考察了面试者的基本锁机制运用&#xff0c;也了解了阻塞队列的产生实现原理。先分享出来&#xff0c;以供鉴赏。 面试题&#xff1a;实现一个自定义的阻塞队列&#xff0c…

java面试题之spring篇

1.Spring是什么&#xff1f;作用是什么&#xff1f; Spring是一个轻量级的JavaEE框架&#xff0c;它主要解决企业应用中的复杂性问题。Spring框架有三个核心部分&#xff1a;IoC容器、AOP和数据访问/集成层。Spring中的IoC容器提供了一种对象创建和对象之间关系管理的机制&…

Json简介与基本使用

一、JSON简介 JavaScript Object Notation (JSON) 是一种将对象转换为字符串的格式&#xff0c;这种格式易于阅读和编写&#xff0c;同时也易于机器解析和生成。JSON对象的语法格式与JavaScript对象的基本一致&#xff0c;但有所不同&#xff0c;例如JSON中的属性名需加双引号…

React 事件处理 ( this问题 参数传递 ref)

React事件的命名采用小驼峰方式&#xff08;cameCase&#xff09;,而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数&#xff0c;而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this 需要谨慎对待JSX回调函数中的…

Linux的Ubuntu的APT使用

Linux的Ubuntu的APT使用 apt 介绍 apt 是 Advanced Packaging Tool 的简称&#xff0c;是一款安装包管理工具。在 Ubuntu 下&#xff0c;我们可以使用 apt 命令进行软件包的安装、删除、清理等&#xff0c;类似于 Windows 中的软件管理工具。 Ubuntu 软件操作的相关命令 su…

Android 面试问题 2024 版(其二)

Android 面试问题 2024 版&#xff08;其二&#xff09; 六、多线程和并发七、性能优化八、测试九、安全十、Material设计和 **UX/UI** 六、多线程和并发 Android 中的进程和线程有什么区别&#xff1f; 答&#xff1a;进程是在自己的内存空间中运行的应用程序的单独实例&…

MySQL的多种约束

事实上&#xff0c;写入表的数据只有数据类型上的约束&#xff0c;但是没有其他更为严格为约束&#xff08;例如 48.2kg 中的 48.2 填在体重字段里是符合浮点类型的约束的&#xff0c;但是万一该数据填入到另外一个身高字段里呢&#xff1f;&#xff09;&#xff0c;就有可能导…

Maven的下载安装配置教程

一、简单了解一下什么是Maven Maven就是一款帮助程序员构建项目的工具&#xff0c;我们只需要告诉Maven需要哪些Jar 包&#xff0c;它会帮助我们下载所有的Jar&#xff0c;极大提升开发效率。 1.Maven翻译为“专家“&#xff0c; ”内行”的意思&#xff0c;是著名Apache公司下…

Unity基于AssetBundle资源管理流程详解

在Unity游戏开发中&#xff0c;资源管理是一个非常重要的环节。随着游戏的发展&#xff0c;资源会变得越来越庞大&#xff0c;因此需要一种高效的资源管理方式来减少内存占用和加快加载速度。AssetBundle是Unity提供的一种资源打包和加载方式&#xff0c;可以将资源打包成一个独…

Fiddler工具 — 19.Fiddler抓包HTTPS请求(二)

5、查看证书是否安装成功 方式一&#xff1a; 点击Tools菜单 —> Options... —> HTTPS —> Actions 选择第三项&#xff1a;Open Windows Certificate Manager打开Windows证书管理器。 打开Windows证书管理器&#xff0c;选择操作—>查看证书&#xff0c;在搜索…

【Java程序员面试专栏 数据结构】四 高频面试算法题:哈希表

一轮的算法训练完成后,对相关的题目有了一个初步理解了,接下来进行专题训练,以下这些题目就是汇总的高频题目,一个O(1)查找的利器哈希表,所以放到一篇Blog中集中练习 题目关键字解题思路时间空间两数之和辅助哈希使用map存储出现过的值,key为值大小,value为下标位置,…

船舶维保管理系统|基于springboot船舶维保管理系统设计与实现(源码+数据库+文档)

船舶维保管理系统目录 目录 基于springboot船舶维保管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、船舶列表 2、公告信息管理 3、公告类型管理 4、维保计划管理 5、维保计划类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、…

网络安全-pikachu之SQL注入漏洞(数字型注入)

哦,SQL注入漏洞&#xff0c;可怕的漏洞。 在owasp发布的top10排行榜里&#xff0c;注入漏洞一直是危害排名第一的漏洞&#xff0c;其中注入漏洞里面首当其冲的就是数据库注入漏洞。 一个严重的SQL注入漏洞&#xff0c;可能会直接导致一家公司破产&#xff01; SQL注入漏…

剑指offer面试题17 合并俩个排序的列表

考察点 链表知识点 链表的遍历题目 分析 题目要求合并俩个排序的列表&#xff0c;很自然的可以想到从俩个链表的头结点开始比较&#xff0c;假设a链表的头结点比b链表的头结点小&#xff0c;那么a链表的头结点就是合并后链表的头结点&#xff0c;接下来也是很自然的可以想到…

Day3 javaweb开发——登录认证

登录功能 没什么好写的&#xff0c;就是LoginController层里面要注入empService的对象 登录校验&#xff08;重点&#xff09; 没有校验的情况 没有登录之前&#xff0c;访问数据的网址需要跳转到登录页面。 http是无状态的&#xff0c;处理其他业务时没有判断他是否登录 …

Apache POI技术-在Java中的基本使用

Apache POI技术-在Java中的基本使用 文章目录 Apache POI技术-在Java中的基本使用前言一、Apache POI是什么&#xff1f;1.Apache POI简介&#xff1a;2.Apache POI主要包括的模块&#xff1a;3.Apache POI 的应用场景&#xff1a;报表生成&#xff1a;数据导入导出&#xff1a…