当前位置: 首页 > news >正文

Golang 字面量的表示

文章目录

  • 1.前言
  • 2.字面量
    • 整型和浮点型字面量
    • 字符串和字符字面量
    • 布尔型字面量
    • 复合类型字面量
    • 使用字段名初始化结构体
    • 使用索引初始化复合类型
  • 3.结论
  • 参考文献

1.前言

在 Go 语言中,字面量是用来表示固定值的表达式。Go 支持几种类型的字面量,包括整型、浮点型、字符串、字符、布尔值以及复合类型(如数组、切片、结构体、映射等)。

下面我将介绍一些在 Go 语言中使用字面量的常见技巧和最佳实践。

2.字面量

整型和浮点型字面量

十进制、八进制、十六进制和二进制表示:

dec := 42           // 十进制
oct := 052          // 八进制,前缀是0
hex := 0x2A         // 十六进制,前缀是0x或0X
bin := 0b101010     // 二进制,前缀是0b或0B(Go 1.13+)

浮点型字面量:

float1 := 3.14
float2 := 6.02e23   // 科学计数法
float3 := .123      // 有效但没有前导整数

数值字面表示中使用下划线分段来增强可读性。

从 Go 1.13 开始,下划线可以出现在整数、浮点数和虚部数字面量中,以用做分段符以增强可读性。 但是要注意,在一个数值字面表示中,一个下划线_不能出现在此字面表示的首尾,并且其两侧的字符必须为(相应进制的)数字字符或者进制表示头。

一些合法和不合法使用下划线的例子:

/ 合法的使用下划线的例子
6_9          // == 69
0_33_77_22   // == 0337722
0x_Bad_Face  // == 0xBadFace
0X_1F_FFP-16 // == 0X1FFFP-16
0b1011_0111 + 0xA_B.Fp2i// 非法的使用下划线的例子
_69        // 下划线不能出现在首尾
69_        // 下划线不能出现在首尾
6__9       // 下划线不能相连
0_xBadFace // x不是一个合法的八进制数字
1_.5       // .不是一个合法的十进制数字
1._5       // .不是一个合法的十进制数字

字符串和字符字面量

普通字符串:

str := "Hello, world!"

原生字符串(反引号):可以包含换行符,不支持转义序列。

rawStr := `Hello,
world!`

字符(rune)字面量:表示单个 Unicode 字符。

char := 'A'          // rune 类型,代表 Unicode 码点

布尔型字面量

trueVal := true
falseVal := false

复合类型字面量

数组和切片:

array := [3]int{1, 2, 3}
slice := []int{1, 2, 3}

结构体:

type Person struct {Name stringAge  int
}
person := Person{"John Doe", 30}

映射(Map):

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

使用字段名初始化结构体

这有助于提高代码的可读性,特别是当结构体有多个字段时。

person := Person{Name: "Jane Doe",Age:  32,
}

使用索引初始化复合类型

对于数组、切片和映射,可以指定索引或键来初始化。

slice := []int{0: 1, 1: 2, 2: 3}
mapExample := map[string]int{"first": 1, "second": 2}

3.结论

在 Go 语言中,字面量提供了一种简洁明了的方式来创建和初始化变量。通过使用不同类型的字面量,开发者可以清晰地表达他们的意图,同时保持代码的清晰和易于维护。以上介绍的字面量表示技巧可以帮助你更高效地使用 Go 语言。


参考文献

基本类型和它们的字面量表示 - Go语言101

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Docker】容器挂载文件修改后 Commit 新镜像,挂载文件不会更新
  • 用Python实现时间序列模型实战——Day 6: ARIMA 模型的理论基础
  • R 语言学习教程,从入门到精通,R 绘图饼图(23)
  • Flink 1.14.* Flink窗口创建和窗口计算源码
  • 链动2+1与消费增值模式的协同效应
  • NestJs bull 用法
  • Linux驱动开发基础(sr04超声波模块)
  • 算法day16|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
  • filezilla使用教程(window下filezilla使用教程)
  • 梧桐数据库(WuTongDB):什么是“顺序扫描”
  • [GESP202312 四级] 田忌赛马
  • 今日算法:蓝桥杯基础题之“星系炸弹”
  • 掌握 Python列表:从基础到进阶技巧
  • FutureTask通常如何使用?
  • Ethercat设备数据 转IEC61850项目案例
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Akka系列(七):Actor持久化之Akka persistence
  • Codepen 每日精选(2018-3-25)
  • download使用浅析
  • EventListener原理
  • HTTP请求重发
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • python大佬养成计划----difflib模块
  • TypeScript迭代器
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • WebSocket使用
  • 记一次删除Git记录中的大文件的过程
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 算法-图和图算法
  • 优秀架构师必须掌握的架构思维
  • 再次简单明了总结flex布局,一看就懂...
  • 中文输入法与React文本输入框的问题与解决方案
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ionic入门之数据绑定显示-1
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ‌JavaScript 数据类型转换
  • #宝哥教你#查看jquery绑定的事件函数
  • #控制台大学课堂点名问题_课堂随机点名
  • (1)STL算法之遍历容器
  • (2024,LoRA,全量微调,低秩,强正则化,缓解遗忘,多样性)LoRA 学习更少,遗忘更少
  • (21)起落架/可伸缩相机支架
  • (day18) leetcode 204.计数质数
  • (k8s)Kubernetes本地存储接入
  • (第30天)二叉树阶段总结
  • (二)windows配置JDK环境
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (九十四)函数和二维数组
  • (每日一问)基础知识:堆与栈的区别
  • (转)用.Net的File控件上传文件的解决方案
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ***检测工具之RKHunter AIDE