GO基础语法|青训营笔记创作活动

85 阅读2分钟

大一萌新初学go,作为略微学习过java和c++的人,个人感觉go与两边都有相似的地方,更有一种集合了两边的优点的感觉,今天是开营的第一堂课,我整理了以下go基础语法

  1. 函数:
    Go语言中的函数使用关键字func声明,可以有参数和返回值。函数名首字母大写表示可导出(public),小写表示私有(private)。

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

    **

  2. 变量:
    变量声明使用关键字var,可以指定变量类型或使用类型推断。变量可以在声明时初始化或留空,然后通过赋值来赋初值。

    var num int
    num = 10
    
    name := "Alice"
    

    **

  3. 循环:
    Go语言提供了for循环来重复执行代码块。可以使用forrangebreak语句来控制循环。

    for i := 1; i <= 5; i++ {
        fmt.Println(i)
    }
    
    numbers := []int{1, 2, 3, 4, 5}
    for _, num := range numbers {
        fmt.Println(num)
    }
    

    **

  4. 条件语句:
    使用if语句进行条件判断,还可以与elseelse if结合使用来处理多个条件。

    num := 10
    if num > 0 {
        fmt.Println("Positive")
    } else if num < 0 {
        fmt.Println("Negative")
    } else {
        fmt.Println("Zero")
    }
    

    **

  5. 指针:
    使用指针可以在函数中传递变量的引用,并允许对原始变量进行修改。使用&运算符获取变量地址,使用*运算符获取指针指向的值。

    num := 10
    ptr := &num
    fmt.Println(*ptr) // 输出:10
    

    **

  6. 结构体:
    结构体是一种自定义的数据类型,它可以包含多个字段。可以使用.操作符来访问结构体的字段。

    type Person struct {
        Name string
        Age  int
    }
    
    p := Person{
        Name: "Alice",
        Age:  25,
    }
    fmt.Println(p.Name, p.Age)
    

    **

  7. 切片:
    切片是一个动态大小的序列,可以通过对数组进行切片来创建。切片提供了便捷的操作和可变长度。

    numbers := []int{1, 2, 3, 4, 5}
    fmt.Println(numbers[2:4]) // 输出:[3 4]
    

    **

  8. 映射:
    映射是一种键值对的集合。可以使用make函数创建映射,使用方括号[]来访问和更新映射中的值。

    m := make(map[string]int)
    m["A"] = 1
    m["B"] = 2
    fmt.Println(m["A"]) // 输出:1
    

    **

  9. 方法:
    Go语言中的方法是与特定类型关联的函数。可以在结构体上定义方法,使用.操作符来调用方法。

    type Rectangle struct {
        Width  int
        Height int
    }
    
    func (r Rectangle) Area() int {
        return r.Width * r.Height
    }
    
    rect := Rectangle{Width: 10, Height: 5}
    fmt.Println(rect.Area()) // 输出:50
    

    **

  10. 接口:
    接口定义了一组方法的集合,实现了这些方法的类型就实现了该接口。接口提供了多态性和灵活性的特性。

    type Shape interface {
        Area() float64
    }
    
    type Rectangle struct {
        Width  float64
        Height float64
    }
    
    func (r Rectangle) Area() float64 {
        return r.Width * r.Height
    }
    
    shape := Rectangle{Width: 10, Height: 5}
    fmt.Println(shape.Area()) // 输出:50.0