变量创建
var <name> <type>
var name string = "Python编程时光" // 1
var (
name string
age int
gender string
)// 2
name := "Python编程时光" //3
name, age := "wangbm", 28 // 4
变量分为两种 普通变量
和 指针变量
普通变量,存放的是数据本身,而指针变量存放的是数据的地址。
切片
类似java中的arrayList。
// 声明字符串切片
var strList []string
// 声明整型切片
var numList []int
// 声明一个空切片
var numListEmpty = []int{}
// make( []Type, size, cap )
// 类型(Type),长度(size),容量(cap)
import (
"fmt"
)
func main() {
a := make([]int, 2)
b := make([]int, 2, 10)
fmt.Println(a, b)
fmt.Println(len(a), len(b))
fmt.Println(cap(a), cap(b))
}
字典
类似Java中的Map
语法:map[KEY_TYPE]VALUE_TYPE
初始化
// 第一种方法
var scores map[string]int = map[string]int{"english": 80, "chinese": 85}
// 第二种方法
scores := map[string]int{"english": 80, "chinese": 85}
// 第三种方法
scores := make(map[string]int)
scores["english"] = 80
scores["chinese"] = 85
判断key是否存在
import "fmt"
func main() {
scores := map[string]int{"english": 80, "chinese": 85}
if math, ok := scores["math"]; ok {
fmt.Printf("math 的值是: %d", math)
} else {
fmt.Println("math 不存在")
}
}
对字典进行循环
import "fmt"
func main() {
scores := map[string]int{"english": 80, "chinese": 85}
for subject, score := range scores {
fmt.Printf("key: %s, value: %d\n", subject, score)
}
}
指针
- 普通变量:存数据值本身
- 指针变量:存值的内存地址
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
如何使用指针
指针使用流程:
定义指针变量。
为指针变量赋值。
访问指针变量中指向地址的值。
在指针类型前面加上 * 号(前缀)来获取指针所指向的内容。
上面的三段代码中,指针的操作都离不开这两个符号:
& :从一个普通变量中取得内存地址
:当在赋值操作值的右边,是从一个指针变量中取得变量值,当*在赋值操作值的左边,是指该指针指向的变量
// 定义普通变量
aint := 1
// 定义指针变量
ptr := &aint
// 创建指针
astr := new(string)
// 给指针赋值
*astr = "Go编程时光"
aint := 1
var bint *int // 声明一个指针
bint = &aint // 初始化
package main
import "fmt"
func main() {
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a )
/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}
//答案:
//a 变量的地址是: 20818a220
//ip 变量储存的指针地址: 20818a220
//*ip 变量的值: 20
if-else
if 条件 1 {
分支 1
} else if 条件 2 {
分支 2
} else if 条件 ... {
分支 ...
} else {
分支 else
}
import "fmt"
func main() {
age := 20
if age > 18 {
fmt.Println("已经成年了")
}
}
for 循环
for [condition | ( init; condition; increment ) | Range]
{
statement(s);
}
a := 1
for a <= 5 {
fmt.Println(a)
a ++
}
import "fmt"
func main() {
for i := 1; i <= 5; i++ {
fmt.Println(i)
}
}
// 不接表达式:无限循环
for {
代码块
}
// 集合遍历
import "fmt"
func main() {
myarr := [...]string{"world", "python", "go"}
for _, item := range myarr {
fmt.Printf("hello, %s\n", item)
}
}