Golang基础语法-数据类型
在Golang中,每个变量都必须有一个明确的数据类型,这有助于编译器在编译期间检查类型,并提供更好的类型安全性。本文将介绍Golang中常见的数据类型,包括基本类型和复合类型。
1 基本类型
1.1 数值类型
Golang中的数值类型包括整数类型和浮点数类型。其中,整数类型分为有符号整数和无符号整数,如下表所示:
--类型 | --描述 |
---|---|
int8 | 有符号8位整数 |
int16 | 有符号16位整数 |
int32 | 有符号32位整数 |
int64 | 有符号64位整数 |
uint8 | 无符号8位整数 |
uint16 | 无符号16位整数 |
uint32 | 无符号32位整数 |
uint64 | 无符号64位整数 |
浮点数类型包括float32和float64两种类型。
以下是数值类型的示例代码:
package mainimport "fmt"func main() {var a int = 10var b float32 = 3.14fmt.Println(a, b)
}
1.2 字符串类型
Golang中的字符串类型使用双引号包围,如"hello world"
。字符串是不可变的,也就是说,一旦定义了字符串变量,就不能修改它的值。以下是字符串类型的示例代码:
package mainimport "fmt"func main() {var str string = "hello world"fmt.Println(str)
}
1.3 布尔类型
Golang中的布尔类型只有两个取值:true和false。以下是布尔类型的示例代码:
package mainimport "fmt"func main() {var flag bool = truefmt.Println(flag)
}
2 复合类型
2.1 数组类型
Golang中的数组类型是一种有序的、固定长度的数据类型。数组中的每个元素都具有相同的数据类型。以下是数组类型的示例代码:
package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println(arr)
}
2.2 切片类型
Golang中的切片类型是一种动态数组,可以根据需要进行扩展或缩小。切片是由指向底层数组的指针、长度和容量三部分组成。以下是切片类型的示例代码:
package mainimport "fmt"func main() {var arr []int = []int{1, 2, 3, 4, 5}fmt.Println(arr)
}
2.3 映射类型
Golang中的映射类型是一种无序的、键值对的数据类型。键和值可以是任何类型,但所有的键必须是同一类型,所有的值也必须是同一类型。以下是映射类型的示例代码:
package mainimport "fmt"func main() {var m map[string]int = map[string]int{"a": 1, "b": 2, "c": 3}fmt.Println(m)
}
2.4 结构体类型
Golang中的结构体类型是一种复合数据类型,可以将不同类型的数据组合在一起。结构体中的每个字段都有自己的名称和数据类型。以下是结构体类型的示例代码:
package mainimport "fmt"type Person struct {Name stringAge int
}func main() {var p Person = Person{"Tom", 20}fmt.Println(p)
}
2.5 接口类型
Golang中的接口类型是一种抽象数据类型,定义了一组方法。接口类型可以实现多态。以下是接口类型的示例代码:
package mainimport "fmt"type Shape interface {Area() float64
}type Rectangle struct {Width float64Height float64
}func (r Rectangle) Area() float64 {return r.Width * r.Height
}func main() {var s Shape = Rectangle{Width: 3, Height: 4}fmt.Println(s.Area())
}
3 总结
本文介绍了Golang中常见的数据类型,包括基本类型和复合类型。掌握这些数据类型可以帮助我们更好地理解Golang程序,并编写出更高效、更安全的代码。
© 著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务

喜欢的朋友记得点赞、收藏、关注哦!!!