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

Go语言入门指南(二): 数据类型

文章创作不易,麻烦大家点赞关注转发一键三连。


在上一篇文章,我们已经完成了开发环境的搭建,成功创建了第一个“Hello, World”程序,并且对变量的声明和初始化有了初步的认识。在这篇文章中,我们将主要介绍Go语言的数据类型。

数字类型

Go语言有多种数据类型。譬如整形就有int、int8、int16、int32和int64。不同的整数类型适用于不同的存储需求,这取决于数据的范围和内存使用的考量。例如:

package main
import "fmt"
func main() {var smallNum int8 = 127var largeNum int64 = 9223372036854775807fmt.Println("int8 存储的值:", smallNum)fmt.Println("int64 存储的值:", largeNum)
}


上述代码展示了不同大小的整数类型的使用。int8存储范围较小,适用于表示较小的整数,而int64可以存储更大范围的整数。这样的设计有助于合理利用内存,避免浪费。

浮点数类型包括float32和float64。float64提供了更高的精度,在涉及到精确计算时更为适用。

package main
import "fmt"
func main() {var num1 float32 = 3.14159var num2 float64 = 3.141592653589793fmt.Println("float32 存储的值:", num1)fmt.Println("float64 存储的值:", num2)
}


这里可以看出float64能更精确地表示圆周率,在需要高精度计算的科学计算或金融领域,float64会是更好的选择。

字符串

Go语言中,字符串的创建很简单,可以使用双引号或反引号。双引号是常规的字符串,而反引号允许创建多行字符串。

package main
import "fmt"
func main() {str1 := "Hello, Go!"str2 := `This is a
multi-line
string.`fmt.Println(str1)fmt.Println(str2)
}


通过此代码,我们看到str2使用反引号创建了多行字符串,这为处理多行文本提供了便利。

我们可以使用len函数来获取字符串的长度。

package main
import "fmt"
func main() {str := "Go Programming"length := len(str)fmt.Println("字符串的长度为:", length)
}


此例通过len函数准确计算出字符串str的长度,这在处理字符串时是一个常用操作。

布尔类型

布尔类型只有两个值,即true和false,主要用于逻辑判断。

package main
import "fmt"
func main() {var flag bool = trueif flag {fmt.Println("条件为真。")} else {fmt.Println("条件为假。")}
}


这个例子中,根据布尔变量flag的值,程序会输出不同的信息,它在控制程序流程方面发挥着重要作用,例如在条件判断和循环中决定程序的执行路径。

常量的使用

常量使用const关键字定义,一旦定义,其值在程序运行期间不会改变,这保证了程序的稳定性和可预测性。

package main
import "fmt"
func main() {const pi = 3.14159fmt.Println("常量pi的值:", pi)
}


此代码中,pi被定义为常量,它的值始终是3.14159,不会被修改,常用于存储不会改变的数值,如数学常数。

数组

数组是一种存储相同类型元素的固定长度的数据结构。

package main
import "fmt"
func main() {var arr [3]intarr[0] = 1arr[1] = 2arr[2] = 3fmt.Println(arr)
}


该代码创建了一个长度为3的整型数组,并为其元素赋值。需要注意的是,数组的长度在声明时就确定,不能改变。

切片

切片是一种比数组更灵活的数据结构,它的长度可以动态变化。

package main
import "fmt"
func main() {slice := []int{1, 2, 3}slice = append(slice, 4)fmt.Println(slice)
}


在这个例子中,我们使用append函数向切片添加元素,展现了切片的动态特性,它可以根据需要灵活调整长度,更适合存储元素数量不确定的数据集合。

类型转换

Go是强类型语言,不同类型的数据在操作时可能需要类型转换。

package main
import "fmt"
func main() {var numInt int = 10var numFloat float64 = float64(numInt)fmt.Println("转换后的浮点数:", numFloat)
}


此代码将整数numInt转换为浮点数numFloat,这在不同类型数据的混合运算或函数调用时是很常见的操作。

指针

指针存储变量的内存地址,为我们提供了更底层的内存操作能力。

package main
import "fmt"
func main() {var num int = 5var ptr *int = &numfmt.Println("变量的值:", num, "变量的地址:", ptr, "地址指向的值:", *ptr)
}

这里,&num获取变量num的地址存储在ptr中,*ptr则是通过指针访问该地址存储的值,指针在处理复杂数据结构和性能优化时非常有用。

http://www.lryc.cn/news/527386.html

相关文章:

  • 2025.1.26机器学习笔记:C-RNN-GAN文献阅读
  • FAST-DDS and ROS2 RQT connect
  • GESP2024年3月认证C++六级( 第三部分编程题(2)好斗的牛)
  • 记一次STM32编译生成BIN文件过大的问题(基于STM32CubeIDE)
  • 【暴力洗盘】的实战技术解读-北玻股份和三变科技
  • Day42:列表的组合
  • mantisbt添加修改用户密码
  • DroneXtract:一款针对无人机的网络安全数字取证工具
  • 简单树形菜单
  • Windows 靶机常见服务、端口及枚举工具与方法全解析:SMB、LDAP、NFS、RDP、WinRM、DNS
  • RNN实现阿尔茨海默症的诊断识别
  • 14-6-1C++STL的list
  • Redis事务机制详解与Springboot项目中的使用
  • DeepSeek-R1,用Ollama跑起来
  • Leecode刷题C语言之组合总和②
  • YOLOv8改进,YOLOv8检测头融合DynamicHead,并添加小目标检测层(四头检测),适合目标检测、分割等,全网独发
  • 【PyQt】QThread快速创建多线程任务
  • 智能码二维码的成本效益分析
  • 企业财务管理系统的需求设计和实现
  • Springboot集成Swagger和Springdoc详解
  • 类和对象(4)——多态:方法重写与动态绑定、向上转型和向下转型、多态的实现条件
  • ui-automator定位官网文档下载及使用
  • 董事会办公管理系统的需求设计和实现
  • ESP32和STM32在处理中断方面的区别
  • 零售业革命:改变行业的顶级物联网用例
  • 字符串算法笔记
  • 在Ubuntu上用Llama Factory命令行微调Qwen2.5的简单过程
  • ThinkPhp伪静态设置后,访问静态资源也提示找不到Controller
  • JavaScript赋能智能网页设计
  • 基于STM32的阿里云智能农业大棚