您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# GO语言的类型有哪些
Go语言(又称Golang)作为一门静态类型、编译型语言,其类型系统设计简洁而强大。本文将全面解析Go语言中的类型系统,涵盖基本类型、复合类型、引用类型、接口类型以及类型定义与别名等核心概念。
---
## 一、基本类型(Basic Types)
Go语言的基本类型分为以下四大类:
### 1. 布尔类型(bool)
- 只有两个值:`true` 和 `false`
- 默认值为 `false`
- 常用于条件判断和逻辑运算
```go
var isActive bool = true
类型 | 位数 | 范围 |
---|---|---|
int8 | 8 | -128 ~ 127 |
int16 | 16 | -32768 ~ 32767 |
int32/rune | 32 | -2^31 ~ 2^31-1 |
int64 | 64 | -2^63 ~ 2^63-1 |
uint8/byte | 8 | 0 ~ 255 |
uint16 | 16 | 0 ~ 65535 |
uint32 | 32 | 0 ~ 2^32-1 |
uint64 | 64 | 0 ~ 2^64-1 |
int/uint | 平台相关(32或64位) |
注意:
rune
是int32
的别名,表示Unicode码点;byte
是uint8
的别名。
float32
:32位单精度浮点(约6位小数精度)float64
:64位双精度浮点(默认类型,约15位小数精度)var pi float64 = 3.141592653589793
complex64
(实部和虚部各32位)complex128
(默认类型,实部和虚部各64位)var c complex128 = 3 + 4i
""
或反引号 `
(原始字符串)str := "Hello, 世界"
[3]int
和 [5]int
是不同的类型)var arr [3]int = [3]int{1, 2, 3}
make()
创建或从数组切片s := make([]int, 0, 5) // 长度0,容量5
s = append(s, 1, 2, 3) // 动态扩展
type Person struct {
Name string
Age int
Contact struct {
Phone string
Email string
}
}
make()
初始化m := make(map[string]int)
m["age"] = 25
Go中的引用类型包括: - 切片(Slice) - 映射(Map) - 通道(Channel) - 函数(Function) - 指针(Pointer)
特点:这些类型的变量存储的是底层数据的引用(内存地址),而非数据本身。
*T
表示指向类型T的指针&
取地址,*
解引用var x int = 10
p := &x // p的类型是*int
fmt.Println(*p) // 输出10
type Writer interface {
Write([]byte) (int, error)
}
any
别名替代func Print(v interface{}) {
fmt.Println(v)
}
type Handler func(string) int
func process(h Handler) {
result := h("input")
// ...
}
make()
创建,需指定元素类型ch := make(chan int, 10) // 缓冲通道
type error interface {
Error() string
}
type Celsius float64 // 新类型,与float64不能直接运算
type String = string // 只是别名
:=
语法可自动推断变量类型var i int = 42
var f float64 = float64(i)
var val interface{} = "hello"
s, ok := val.(string) // ok为true时转换成功
通过本文的详细解析,我们可以看到Go语言的类型系统既保持了简洁性,又提供了足够的表达能力。理解这些类型特性是编写高效、健壮Go程序的基础。 “`
本文共计约1750字,全面覆盖了Go语言的类型系统,采用Markdown格式编写,包含代码示例和表格对比,适合作为技术文档或博客文章。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。