基本语法
main函数
main函数必须在main包里定义,否则没办法进行执行,main函数是入口函数。
import fmt表示将fmt包进行导入
fmt为基本输入输出流,类似c语言中的stdio.h c++中的iostream, println()打印输出
package main
import "fmt"
func main() {
fmt.Println("Hello golang")
}
变量
- 变量完整声明
语法 var 变量名 数据类型 = [变量值]
其中变量值是可选的 - 段类型声明
可以忽略数据类型,由编译器来推断数据类型是什么
e := 20
段类型声明只能在函数体内进行声明
常量
根据数据类型和值定义一个或一组常量,常量一旦定义了就无法改变。
定义一组常量
// 定义常量 常量一旦定义将没办法进行改变 iota没定义一组常量都会被初始化为0,每定义一个常量iota值 + 1,
const (
c0 = iota
c1 = iota
c3 = 20
)
定义单个常量
const a = 20
基本数据类型
布尔类型: bool
整型: byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr
浮点: float32 float64
复数: complex64 complex128
字符: rune
字符串: string
其中rune类型c语言中的char
uint为无符号整数
复合数据类型
指针
类型c语言的指针,使用&来获取变量的地址并赋值到指针中,可以利用指针来访问原对象
依旧是*p表示访问指针中的地址的值,p表示访问地址,go语言不支持指针计算比如p++ p +=8 这些go语言都不支持
func main() {
a := 20
b := &a
fmt.Println(*b)
*b = 50
fmt.Println(a)
}
数组
定义语法
var 数组名称 [数组长度]数组类型;
简略定义
数组名称 数组名称 := [数组长度]数据类型
var arr [10]int;
arr := [2]int{1, 2}
// 不声明数组长度创建数组
arr := [...]int{1, 2, 122, 3}
// 获取数组长度
len(arr)
切片
存在数组中的数量大小是固定的,没办法变更,而存在切片中数量是可以改变的。
调用make方法创造一个切片,参数1为数据类型,参数2为长度,使用make创建切片后如果是会初始化默认值,int则会初始化为0 bool会初始化为false 字符串会初始化为空串
a := make([]bool, 10)
a = append(a, true)
a = append(a, true)
fmt.Println(len(a))
fmt.Println(cap(a))
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}
Map
类似Java中的Map,key和value是一一对应的关系的,使用map[key]可以访问与key所对应的value
可以使用map[key类型]value类型来创建map
也可以使用make函数来创建map,make(map[key类型]value类型, map容量),其中map容量不是必须填的
可以使用map[key] = value来向map中添加元素。
ma := make(map[string]int, 2)
ma["name"] = 1
ma["age"] = 12
fmt.Println(ma)
如果拆入数据时map容量不够了,则数据不会插入到map中。
根据key删除指定key value, delete(map名称, key名称)
func main() {
ma := make(map[string]int, 2)
ma["name"] = 1
ma["age"] = 12
ma["id"] = 12
delete(ma, "id")
fmt.Println(ma)
//a := test()
//a("Lyra")
//fmt.Println(10 / 0)
}
遍历map
for key, value := range map名称 {
fmt.Println(key)
fmt.Println(value)
}
结构体
结构体一般配合type来实现面向对象的封装特性的,语法格式如下所示
type Student struct {
成员变量1 类型
成员变量2 类型
成员变量3 类型
}
在新建变量时,根据定义的key: value来为struct进行赋值即可
lyra := Student{
成员变量1 变量值,
成员变量2 变量值,
成员变量3 变量值,
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律