go语言 类型和常量

go语言 类型和常量

一、基础类型

Go语言是一种静态类型语言,这意味着所有变量的类型在编译时必须明确,并且一旦定义,类型就不能改变。

1.数字类型

  • 整数类型
    • int8:占1个字节,范围是-128127
    • int16:占2个字节,范围是-3276832767
    • int32:占4个字节,范围是-21474836482147483647
    • int64:占8个字节,范围是-92233720368547758089223372036854775807
    • int:根据平台不同,可以是int32int64
  • 正整数类型
    • uint8:占1个字节,范围是0255
    • uint16:占2个字节,范围是065535
    • uint32:占4个字节,范围是04294967295
    • uint64:占8个字节,范围是018446744073709551615
  • 浮点数类型
    • float32:32位浮点数。
    • float64:64位浮点数,通常用于需要高精度的计算
  • 复数类型
    • complex64:实部和虚部都是float32
    • complex128:实部和虚部都是float64
package mainimport "fmt"func main() {// 整数类型//var a int8 = 128 // 1. 超过范围报错var a int8 = 127var b int8 = 1fmt.Println(a + b) // 2. -128// 浮点数var c float32 = 1.555555555555555555 // 3. 1.5555556 只到小数点后七位var d float64 = 1.555555555555555555 // 4. 1.5555555555555556  到小数点后16位fmt.Println(c, d)//fmt.Println(c+d) // 5. 不同类型语言不能相加
}

2. 字符串、字节和字符类型

  • 字符串string,使用双引号"或反引号`` `定义。
  • 字节类型byte,等同于uint8,通常用于表示ASCII字符。
  • 字符类型rune,等同于int32,用于表示一个Unicode字符。
package mainimport "fmt"func main() {// 字符串//var a string = 'qwerty'  // 1. 单引号报错var a string = "qwerty" // 2. 使用双引号var b string = `真的假的
是真的?
是假的`fmt.Println(a)fmt.Println(b) // 3. 使用反引号// 字节类型//var c byte = 'Aa'  // 4. 长度超出,只能一个字节//var c byte = '周' // 5. 只能是ASCII所能表示的字符var c byte = 'A'fmt.Println(c)          // 6. 输出65fmt.Println(string(c))  // 7. 转换成字符输出 Afmt.Println(string(65)) // 7. 转换成字符输出 A// 字符类型var d rune = '周'fmt.Println(d)             // 8. 输出:21608fmt.Println(string(d))     // 9. 转换成字符输出:周fmt.Println(string(21608)) // 9. 转换成字符输出周
}

3. 布尔类型

  • 布尔类型bool,只有两个值:truefalse

二、常量

常量是指一旦被赋值后,其值就不能被改变的变量。Go语言的常量使用关键字const来定义。

  • 常量的定义和特性

    • 不变性:常量的值在初始化后不能被改变。

    • 作用域:常量的作用域限定在其定义的地方,与函数或代码块内。

    • 类型:Go语言中的常量可以是任何类型,包括数字、字符串、布尔值等。

  • Go语言常量的使用

    • package mainimport "fmt"// 定义常量
      const school = "北京交大"func main() {// 访问全局常量fmt.Println(school) // 北京交大// 定义局部常量const school = "上海交大"fmt.Println(school) // 上海交大demo01()
      }func demo01() {fmt.Println(school) // 输出全局的常量 school 北京交大
      }
      
  • 补充说明

    • 声明关键字:使用const关键字来声明常量。

    • 可读性:常量名通常使用全大写字母表示,遵循Go语言的命名习惯。

    • 不能简短声明:定义常量时不需要使用:=简短声明语法,因为这会导致编译错误。

    • 编译时常量:Go语言的常量在编译时就已经确定,这使得编译器可以进行优化。

    • iota关键字:在Go语言中,iota是一个特殊的关键字,用于在定义一组相关常量时提供自动增量的值。

      • 示例

      • const (Monday = iota // Monday == 0Tuesday       // Tuesday == 1Wednesday     // Wednesday == 2// 以此类推...
        )
        

三、声明变量的几种方式

  1. 使用var关键字: 使用var可以声明一个或多个变量,并可选地初始化它们。

    var a int = 10
    var b, c string = "hello", "world"
    
  2. 短变量声明: Go语言提供了一种更简短的变量声明方式,使用:=操作符,这种声明方式会根据赋值的值自动推断变量的类型。

    a := 10
    b, c := "hello", "world"
    
  3. 在函数内部使用短变量声明: 短变量声明只能在函数内部使用,它是一种非常常见的变量声明方式,因为它可以减少代码量并提高可读性。

    func main() {a := 10fmt.Println(a)
    }
    
  4. 使用new函数new函数可以用于分配内存,并返回一个指针,指向新分配的类型为T的零值变量。

    var p *int = new(int)// 使用*操作符来访问指针指向的值,并赋值
    *p = 42
    // 打印指针指向的值
    fmt.Println(*p) // 输出: 42
    
  5. 使用类型转换声明变量: 如果需要声明一个变量并将其初始化为特定的类型,可以使用类型转换来实现。

    var a int = int(10.0) // 从float64转换为int
    
  6. 使用const声明常量: 虽然不是变量声明,但const用于声明编译时常量,其值在编译时就已确定,并且在运行时不可更改。

    const Pi = 3.14159
    
  7. 多重赋值: Go语言支持多重赋值,这可以用来一次性声明和初始化多个变量。

    a, b := 1, 2
    
  8. 使用...进行可变参数传递: 在函数中,可以使用...操作符来接收不定数量的参数,这些参数被存储在一个底层为数组的变量中。

    func sum(args ...int) int {total := 0for _, arg := range args {total += arg}return total
    }
    
  9. 匿名结构体字面量: 当需要创建一个结构体实例但不想显式定义结构体类型时,可以使用匿名结构体字面量。

    var person = struct {Name stringAge  int
    }{Name: "John Doe",Age:  30,
    }
    

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

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

相关文章

房屋租赁管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,中介管理,房屋信息管理,房屋类型管理,租房订单管理,租房信息管理 微信端账号功能包括:系统首页,房屋信息&a…

极狐GitLab 将亮相2024空天信息大会暨数字地球生态峰会,携手中科星图赋能空天行业开发者

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…

测试类型介绍-功能测试入门指南

1. 功能测试定义​ 功能测试,作为软件质量保证的关键环节,专注于验证软件是否按预期执行其指定功能。它直接面向用户需求,确保每一个功能点都能正确无误地工作。简而言之,功能测试是检查软件功能是否符合设计规范的过程。 2. 为…

Django文档简化版——Django快速入门——创建一个基本的投票应用程序

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应(1)创建项目(2)用于开发的简易服务器(3)创建投票应用(4)编写第一个视图1、编写…

Qualcomm QCA206x EasyMesh For Ubuntu

1. 引言 关于EasyMesh概念我们这里就不再过多的赘述,此篇文档的目的是,让广大初学者,有一个很方便的平台进行EasyMesh的学习和测试。 2. X86 Ubuntu平台 2.1 硬件环境准备 备注:QCA206x WiFi module推荐使用移远的FC64E/FC66E。…

Mysql笔记-v2【7月5日更新】

零、 help、\h、? 调出帮助 mysql> \hFor information about MySQL products and services, visit:http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit:http://dev.mysql.com/ To buy MySQL Enterprise support, training, …

详解yolov5的网络结构

转载自文章 网络结构图(简易版和详细版) 此图是博主的老师,杜老师的图 网络框架介绍 前言: YOLOv5是一种基于轻量级卷积神经网络(CNN)的目标检测算法,整体可以分为三个部分, ba…

第十节:学习ConfigurationProperties类来配置pojo实体类参数(自学Spring boot 3.x的第二天)

大家好,我是网创有方 。这节记录下如何使用ConfigurationProperties来实现自动注入配置值。。实现将配置文件里的application.properties的参数赋值给实体类并且打印出来。 第一步:新建一个实体类WechatConfig package cn.wcyf.wcai.config;import org…

BAT批处理运行项目

BAT批处理运行项目 1. 批处理简介 顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。 2. 编写启动zookeeper脚本 echo off call "D:\Program Files\zookeeper-3.4.10\…

GISSERVER 管理器如何发布自定义地图网站

GISSERVER 管理器可以发布我们自己的地图网站,那么如何通过编程或自动生成的方式生成一个地图页面并将其用GISSERVER 管理器发布出来呢?在看本章之前希望您能了解一下WEBGIS的基本架构情况,对您理解本章内容及WEBGIS基本原理很有帮助&#xf…

由俭入奢易,由奢入俭难

由俭入奢易,由奢入俭难。这是古人的良言,又像是告诫后来人要居安思危,不要忘记了艰难的时候。从简朴、节约的生活方式转变为奢侈、挥霍的生活方式相对容易,但一旦习惯了奢侈的生活,再想要回到简朴的生活就十分困难了。…

java花店管理系统eclipse开发mysql数据库

1 绪论 1.1 系统开发目的 随着人们物质生活水平和经济水平的不断提高,室内绿化布置、家庭园艺装饰、礼仪鲜花等日益受到重视和青睐,以及送鲜花给亲朋好友来表达自己的情谊。传统的花店对于信息的管理的主要方式是基于文本、表格等纸质手工处理&#xf…

React Native 和 Flutter 的开发对比

React Native (RN) 和 Flutter 都是用于构建跨平台移动应用程序的流行框架。两者都具有各自的优势和劣势,选择哪个框架取决于您的具体需求和项目。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 以下是一些 RN 和 Flutter…

【MySQL】SQL中的DROP、DELETE和TRUNCATE的区别

文章目录 前言一、DROP、DELETE和TRUNCATE的区别区别二、总结 前言 在使用SQL进行数据库操作时,我们经常需要删除数据。SQL提供了几种不同的命令来完成这个任务,包括DROP、DELETE和TRUNCATE。虽然这三个命令都可以用来移除数据,但它们的行为…

企业搭建知识库:解锁无限潜力的钥匙

在当今这个信息爆炸的时代,企业如何高效地管理、传播与利用知识,已成为衡量其竞争力的重要标尺。知识库,作为这一背景下的产物,正逐步成为企业不可或缺的数字资产。它不仅是一个自助式的数字门户,更是连接员工、客户与…

【产品经理】订单处理12-订单的取消与反取消

在电商ERP系统中,订单取消与反取消也是常见功能之一。 订单取消与反取消也是电商ERP系统的常见功能,本次主要讲解下订单取消与反取消的逻辑。 一、订单取消 在电商ERP系统中,订单取消一般由审单员操作,此类取消一般是由于上下游…

jcmd命令笔记

文章目录 GC.class_statsjcmd 25274 Thread.printjcmd 25274 GC.run 其他文档(命令行) jcmd是一款命令行工具,可以监控jvm虚拟机性能和诊断问题。 GC.class_stats 如果报错: GC.class_stats command requires -XX:UnlockDiagnosticVMOptions 在启动脚本…

探寻操作系统文件名字符限制的规则和历史

引言 从最早的电脑系统到现代的操作系统,文件命名的规则一直在不断发展,这些规则体现了不同操作系统设计哲学的差异。作为开发者,了解这些差异和背后的历史渊源非常有价值,本文将详细探讨Windows、macOS和Linux三大主流操作系统在…

解决 npm intasll 安装报错 Error: EPERM: operation not permitted

Node.js安装及环境配置完成之后 npm install express -g 安装全局的模块报错提示没有权限operation not permitted mkdir 错误编号4048: 其原因是当前用户操作该目录权限不足,当以管理员身份运行cmd,再执行npm install express -g 是不会报权…

Windows 如何选择多个文件?连续选择和间隔选择都有方法

在我们使用电脑的时候可能会遇见需要选择多个文件的情况,这些文件可能是连续的也有可能是间隔开的,这时候你知道都有哪些方法可以帮助我们进行选择吗?下面就分情况总结了不同的选择多个文件的方法,接下来就一起来看一看。 连续多…