Go语言基础

61 阅读2分钟

变量和常量

变量

Go语言使用 var 关键字来声明变量,格式如下:

var 变量名 类型

例如:

var a int
a = 1

或者可以在声明的同时进行赋值:

var b string = "hello"

也可以使用短变量声明方式:

c := true

常量

Go语言使用 const 关键字来声明常量,格式如下:

const 常量名 类型 = 值

例如:

const pi float32 = 3.14

或者可以省略类型:

const name = "ziyi"

数据类型

Go语言的数据类型包括基本类型和复合类型。

基本类型

Go语言的基本类型包括:

  • bool
  • 数值类型:int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64、float32、float64、complex64、complex128
  • string

例如:

var a bool = true
var b int = 10
var c float64 = 3.14
var d string = "hello"

复合类型

Go语言的复合类型包括:

  • 数组
  • 切片
  • 映射
  • 结构体
  • 接口
  • 函数

例如:

// 数组
var arr [5]int
arr[0] = 1
arr[1] = 2

// 切片
var slice []int = make([]int, 3)
slice[0] = 1
slice[1] = 2

// 映射
var m map[string]int = make(map[string]int)
m["a"] = 1
m["b"] = 2

// 结构体
type Person struct {
    Name string
    Age int
}
var p Person
p.Name = "Tom"
p.Age = 20

// 接口
type Animal interface {
    Move() string
}
type Cat struct {}
func (c Cat) Move() string {
    return "I can walk and run"
}

// 函数
func add(a, b int) int {
    return a + b
}

控制语句

条件语句

Go语言的条件语句包括 if 语句和 switch 语句。

if语句

if语句的格式如下:

if 条件 {
    // 执行语句
} else if 条件 {
    // 执行语句
} else {
    // 执行语句
}

例如:

var score int = 80
if score >= 90 {
    fmt.Println("A")
} else if score >= 80 {
    fmt.Println("B")
} else {
    fmt.Println("C")
}

switch语句

switch语句的格式如下:

switch 变量 {
case1:
    // 执行语句
case2:
    // 执行语句
default:
    // 执行语句
}

例如:

var day int = 2
switch day {
case 1:
    fmt.Println("Monday")
case 2:
    fmt.Println("Tuesday")
default:
    fmt.Println("Other day")
}

循环语句

Go语言的循环语句包括 for 语句。

for语句

for语句的格式如下:

for 变量 := 初始值; 变量 < 终止值; 变量++ {
    // 执行语句
}

例如:

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

还可以使用for-range的方式来遍历数组、切片、映射等数据类型。

例如:

var arr [5]int = [5]int{1, 2, 3, 4, 5}
for index, value := range arr {
    fmt.Println(index, value)
}

函数

Go语言的函数使用 func 关键字来定义,格式如下:

func 函数名(参数列表) 返回值列表 {
    // 执行语句
    return 返回值
}

例如:

func add(a, b int) int {
    return a + b
}

示例代码

下面是以上讲解的代码示例:

package main

import (
    "fmt"
)

func main() {
    // 变量和常量
    var a int
    a = 1
    var b string = "hello"
    c := true
    const pi float32 = 3.14
    const name = "ziyi"

    // 数据类型
    var arr [5]int
    arr[0] = 1
    arr[1] = 2
    var slice []int = make([]int, 3)
    slice[0] = 1
    slice[1] = 2
    var m map[string]int = make(map[string]int)
    m["a"] = 1
    m["b"] = 2
    type Person struct {
        Name string
        Age int
    }
    var p Person
    p.Name = "Tom"
    p.Age = 20
    type Animal interface {
        Move() string
    }
    type Cat struct {}
    func (c Cat) Move() string {
        return "I can walk and run"
    }
    func add(a, b int) int {
        return a + b
    }

    // 控制语句
    var score int = 80
    if score >= 90 {
        fmt.Println("A")
    } else if score >= 80 {
        fmt.Println("B")
    } else {
        fmt.Println("C")
    }
    var day int = 2
    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    default:
        fmt.Println("Other day")
    }
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
    var arr [5]int = [5]int{1, 2, 3, 4, 5}
    for index, value := range arr {
        fmt.Println(index, value)
    }
}