變量創建
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)
}
}