基本数据类型
数据类型 | 关键字 | 是否引用 |
---|---|---|
整数类型 | int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64 | 否 |
浮点数类型 | float32, float64 | 否 |
复数类型 | complex64, complex128 | 否 |
布尔类型 | bool | 否 |
字符串类型 | string | 否 |
其他整型 | byte, uintptr, rune(用于表示Unicode字符) | 否 |
结构体类型 | struct | 否 |
数组类型 | [3]int | 否 |
切片类型 | []int | 是 |
映射类型 | map[string]string | 是 |
通道类型 | channel | 是 |
接口类型 | interface | 是 |
函数类型 | func | 是 |
指针类型 |
初始化方式
new()
主要用于值类型的变量的初始化,返回的是该类型的指针
make()
用于切片、映射、通道这三种引用类型的变量初始化,返回的就是该类型本身
代码
package main
import (
"fmt"
)
type Person struct {
Name string
Age int
}
func main() {
//切片
arr1 := []int{1,2,3,4,5}
arr2 := make([]int, 5)
fmt.Println(arr1)
fmt.Println(arr2)
//数组
arr3 := [3]int{1,2,3}
arr4 := [...]int{1,2,3}
arr5 := [...]int{0:1, 1:2, 2:3}
arr6 := [3]int{}
fmt.Println(arr3)
fmt.Println(arr4)
fmt.Println(arr5)
fmt.Println(arr6)
//映射
map1 := make(map[string]string)
map1["k1"] = "v1"
map2 := map[string]string{
"k1" : "v1",
"k2" : "v2",
}
fmt.Println(map1)
fmt.Println(map2)
//初始化对象
p1 := Person{"Bob", 20}
p2 := new(Person)
p2.Name = "Tom"
p2.Age = 21
p3 := *p2
fmt.Println(p1)
fmt.Println(p2)
fmt.Println(p3)
}
命令
- 运行文件
go run main.go
- 格式化代码
go fmt
- 查看go环境变量
go env
module
- 同一文件夹层级内只能有一个package,一个package可能有多个文件(约定在同一文件夹层级中)
- 在同一个package内,多个文件中对外暴露的方法名和属性名不能重复,只能有一个main函数
- 以“module名/各级文件夹名”的形式引入,使用package名调用,也可以设置别名