Go 语言提供了多种基本数据类型,用于存储和操作数据。下面是 Go 语言中常见的数据类型:
整数类型
Go 语言中有四种整数类型:
int
: 32 位整数int8
: 8 位有符号整数int16
: 16 位有符号整数int32
: 32 位有符号整数int64
: 64 位有符号整数uint
: 32 位无符号整数uint8
: 8 位无符号整数uint16
: 16 位无符号整数uint32
: 32 位无符号整数uint64
: 64 位无符号整数
下面是一个使用整数类型的示例:
package main
import "fmt"
func main() {
var x int = 10
var y uint = 20
fmt.Println(x) // 10
fmt.Println(y) // 20
}
浮点数类型
Go 语言中有两个浮点数类型:
float32
: 32 位浮点数float64
: 64 位浮点数
下面是一个使用浮点数类型的示例:
package main
import "fmt"
func main() {
var x float32 = 3.14
var y float64 = 2.71
fmt.Println(x) // 3.14
fmt.Println(y) // 2.71
}
字符类型
Go 语言中有一个字符类型:
byte
: 8 位无符号整数,用于表示 ASCII 字符rune
: 32 位无符号整数,用于表示 Unicode 字符
下面是一个使用字符类型的示例:
package main
import "fmt"
func main() {
var c byte = 'A'
var r rune = '中'
fmt.Println(c) // A
fmt.Println(r) // 中
}
布尔类型
Go 语言中有一个布尔类型:
bool
: 1 位布尔值,用于表示 true 或 false
下面是一个使用布尔类型的示例:
package main
import "fmt"
func main() {
var b bool = true
fmt.Println(b) // true
}
字符串类型
Go 语言中有一个字符串类型:
string
: 字符串类型,用于表示一系列字符
下面是一个使用字符串类型的示例:
package main
import "fmt"
func main() {
var s string = "hello, world!"
fmt.Println(s) // hello, world!
}
指针类型
Go 语言中有一个指针类型:
*T
: 指针类型,用于表示指向类型T
的指针
下面是一个使用指针类型的示例:
package main
import "fmt"
func main() {
var x int = 10
var px *int = &x
fmt.Println(*px) // 10
}
结构体类型
Go 语言中有一个结构体类型:
struct
: 结构体类型,用于表示一系列字段
下面是一个使用结构体类型的示例:
package main
import "fmt"
type Person struct {
name string
age int
}
func main() {
var p Person
p.name = "John"
p.age = 30
fmt.Println(p.name) // John
fmt.Println(p.age) // 30
}
数组和 slice 类型
Go 语言中有两个数组和 slice 类型:
[]T
: 数组类型,用于表示固定长度的数组[]T{}
: slice 类型,用于表示可变长度的数组
下面是一个使用数组和 slice 类型的示例:
package main
import "fmt"
func main() {
var arr [5]int = [5]int{1, 2, 3, 4, 5}
var slc []int = []int{1, 2, 3, 4, 5}
fmt.Println(arr[0]) // 1
fmt.Println(slc[0]) // 1
slc = append(slc, 6)
fmt.Println(slc) // [1 2 3 4 5 6]
}
接口类型
Go 语言中有一个接口类型:
interface{}
: 接口类型,用于表示一个可以实现多种行为的对象
下面是一个使用接口类型的示例:
package main
import "fmt"
type Shape interface {
area() float64
}
type Circle struct {
radius float64
}
func (c Circle) area() float64 {
return 3.14 * c.radius * c.radius
}
type Rectangle struct {
width float64
height float64
}
func (r Rectangle) area() float64 {
return r.width * r.height
}
func main() {
var c Circle = Circle{5.0}
var r Rectangle = Rectangle{4.0, 6.0}
var shapes []Shape = []Shape{c, r}
for _, shape := range shapes {
fmt.Println(shape.area()) // 78.5
}
}
maps 类型
Go 语言中有一个 maps 类型:
map[K]V
: maps 类型,用于表示键值对的集合
下面是一个使用 maps 类型的示例:
package main
import "fmt"
func main() {
var m map[string]int = map[string]int{"a": 1, "b": 2}
fmt.Println(m["a"]) // 1
m["c"] = 3
fmt.Println(m) // map[b:2 c:3 a:1]
}