«

Golang 基本语法

时间:2025-1-9 19:11     作者:杨佳乐     分类: Golang


package main

import "fmt"

// 基本语法
func main(){

    // 一、变量声明 Go有多种方式声明变量

    // 1.显式声明
    var x int
    x = 10

    // 2.简短声明 (简短声明只能是新变量,现在给上面的x使用简短声明,则会报错)
    k := 10

    // 二、数据类型
    // 1.整型 int int8 int16 int32 int64
    var int_a int = 5

    // 2.浮点型 float32 float64
    var float_a float32 = 3.14

    // 3.字符串 string
    var string_a string = "你好,Golang"

    // 4.布尔型 bool
    var bool_a bool = true
    var bool_b bool = false

    // 5.字符型 rune

    // 三、常量声明 (常量一旦声明就不能更改其值。常量声明使用cost关键字)
    const PI = 3.14
    const Greeting = "Hello"

    // 四、控制结构
    // 条件语句 Go使用 if 语句进行条件判断
    ifa := 10

    if ifa > 10 {
        fmt.Println("ifa 大于 10")
    } else {
        fmt.Println("ifa 小于等于 10")
    }

    // 循环语句 Go只有一个循环语句 for, 它可以用于多种情况
    for i :=0; i < 5; i++ {
        fmt.Println(i)
    }

    // 使用for 模拟 while 循环
    wi := 0
    for wi < 5 {
        fmt.Println(wi)
        wi++
    }

    // 无限循环
    for {
        fmt.Println("这是一个无限循环(死循环)")
    }

    // Switch 语句
    day := 2
    switch day {
    case 1:
        fmt.Println("这是1")
    case 2:
        fmt.Println("这是2")
    default:
        fmt.Println("不是1也不是2")
    }

    // Select语句 (用于多路选择 常用于 goroutines ) 此处略过

    // 五、函数
    // 函数声明 (函数使用func 关键字声明,函数可以有多个返回值)
    func add(a int, b int) int {
        return a + b
    }

    // 多返回值函数
    func divide(a int, b int) (int, int) {
        return a / b, a % b
    }

    // 匿名函数
    addfunc := func(a, b int) int {
        return a + b
    }
    fmt.Println(addfunc(3, 4))

    // 函数作为参数(go支持将函数作为参数传递)
    func apply(a int, f func(int) int) int {
        return f(a)
    }
    func square(x int) int {
        return x * x
    }
    fmt.Println(apply(5, square)) // 25

    // 六、数组与切片
    // 数组(Go中的数组大小是固定的,一旦声明不能更改大小)
    var arr [3]int = [3]int{1, 2, 3}
    fmt.Println(arr)

    // 切片(切片是GO中更加灵活的数组,可以动态增长)
    var slice []int = []int{1, 2, 3}
    slice = append(slice, 4)
    fmt.Println(slice)

    // 七、结构体(结构体是 Go 中的复合数据类型,通常用来表示对象或记录)
    type Person struct {
        Name string
        Age  int
    }

    p := Person{Name: "John", Age: 30}
    fmt.Println(p.Name)

    // 八、接口(接口是 Go 中的核心概念之一,它定义了行为而不关心具体类型)
    type Speaker interface {
        Speak() string
    }

    type Person struct {
        Name string
    }

    func (p Person) Speak() string {
        return "Hello, my name is " + p.Name
    }

    func introduce(speaker Speaker) {
        fmt.Println(speaker.Speak())
    }

    p := Person{Name: "John"}
    introduce(p)

    // 九、错误处理(Go 中没有异常处理机制,而是通过返回值来传递错误信息)
    func divide(a, b int) (int, error) {
        if b == 0 {
            return 0, fmt.Errorf("cannot divide by zero")
        }
        return a / b, nil
    }

    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }

}