您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # 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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。