Go语言入门笔记总结(上) | 青训营

以下是关于Go语言入门的一些笔记总结(上):

Go语言是一种简洁高效的编程语言,适用于各种应用领域Go语言入门涵盖了基本语法、常用特性和控制结构等关键概念,以下是一份总结:

1.包和导入

在Go中,包(package)是一种组织代码的方式,用于将相关的功能组合在一起。每个Go源文件开头的 package 声明指定了该文件所属的包。一个包可以包含多个相关的函数、类型和变量等。包的名称一般与包含的文件夹名称相同。

导入其他包

在Go中,要使用其他包中的功能,需要使用 import 语句导入这些包。导入的包可以来自标准库,也可以是自己创建的包。

下面是一个示例,演示如何创建自定义包、导入标准库包以及使用导入的功能:

  1. 创建自定义包:

创建一个名为 mathutil 的文件夹,在其中创建一个名为 math.go 的文件:

// mathutil/math.go
package mathutil

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

func Subtract(a, b int) int {
    return a - b
}
  1. 使用自定义包:

在主程序中,可以导入自定义包并使用其中的功能:

// main.go
package main

import (
    "fmt"
    "your-module-path/mathutil"  // 使用您实际的模块路径
)

func main() {
    result1 := mathutil.Add(5, 3)
    result2 := mathutil.Subtract(10, 4)

    fmt.Println("Addition:", result1)
    fmt.Println("Subtraction:", result2)
}
  1. 导入标准库包:

直接导入Go标准库中的包,例如 fmttime

package main

import (
    "fmt"
    "time"
)

func main() {
    currentTime := time.Now()
    fmt.Println("Current time:", currentTime)
}

这个示例展示了如何创建自定义包、导入它并使用其中的函数,以及如何导入标准库包并使用其功能。通过这种方式,可以有效地组织代码,使其更具模块性和可重用性。

2.定义函数

函数是在程序中执行特定任务的基本代码块。它们用于将代码分解为可重用和可维护的单元,以提高代码的可读性和组织性。以下是关于函数的详细解释,以及附带的代码示例。

在Go中,使用 func 关键字来定义函数。函数的基本语法如下:

func functionName(parameters) returnType {
    // 函数体
    return result
}
  • functionName 是您定义的函数的名称。
  • parameters 是函数的参数列表,每个参数由名称和类型组成。
  • returnType 是函数的返回值类型。
  • 函数体内的代码是函数的实际逻辑。
  • return 语句用于指定函数的返回值。

示例:函数定义和调用

下面是一个示例,展示如何定义函数并在主程序中调用它:

package main

import "fmt"

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

func main() {
    result := add(3, 5)
    fmt.Println("Result:", result)
}

在这个示例中,定义了一个名为 add 的函数,它接受两个整数参数 ab,并返回它们的和。在 main 函数中,调用了 add 函数并将结果存储在变量 result 中,然后使用 fmt.Println 打印出结果。

参数和返回值

函数可以有零个、一个或多个参数,这些参数传递给函数的输入值。同样,函数可以返回一个值或多个值作为输出。

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

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

在上述示例中,add 函数接受两个整数参数并返回一个整数。divide 函数接受两个浮点数参数,返回一个浮点数结果和一个错误。错误类型通过 errors.New 函数创建,用于处理潜在的错误情况。

匿名函数和闭包

Go还支持匿名函数,这是一种没有函数名的函数。匿名函数通常用于传递给其他函数,或者在需要时直接调用。

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

    result := add(2, 3)
    fmt.Println("Result:", result)
}

此外,Go还支持闭包,这是一种在函数内部引用外部变量的方式。闭包可以在函数中定义并返回,用于保持状态和状态。

总结

函数是Go语言中的基本构建块,用于执行特定任务并提高代码的模块性和可维护性。通过合理的参数和返回值设计,可以创建更具有灵活性和可扩展性的代码。匿名函数和闭包则提供了更高级的特性,用于处理更复杂的问题。 变量和常量是Go语言中非常重要的概念,它们用于存储和管理数据。以下是对变量和常量的详细解释,以及附带的代码示例。

3.变量

变量和常量是Go语言中非常重要的概念,它们用于存储和管理数据。以下是对变量和常量的详细解释,以及附带的代码示例。

变量的声明

在Go中,使用 var 关键字来声明变量。变量是用来存储和管理数据的容器。变量可以显式指定类型,也可以进行类型推断。 以下是一些示例:

显式指定类型

package main

import "fmt"

func main() {
    var age int
    age = 30

    var name string
    name = "Alice"

    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

类型推断

package main

import "fmt"

func main() {
    age := 30
    name := "Bob"

    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

常量

在Go中,使用 const 关键字声明常量。常量是不可更改的值,它们在编译时确定。常量声明时必须赋予初始值。

package main

import "fmt"

func main() {
    const pi = 3.14159
    const daysInWeek = 7

    fmt.Println("Pi:", pi)
    fmt.Println("Days in a week:", daysInWeek)
}

多变量声明

Go语言支持同时声明多个变量。您可以使用 var 关键字,也可以使用 := 进行类型推断。

package main

import "fmt"

func main() {
    var width, height int = 10, 5
    fmt.Println("Width:", width)
    fmt.Println("Height:", height)

    name, age := "Alice", 25
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

枚举

虽然Go语言没有显式的枚举类型,但您可以使用常量组来模拟枚举。以下是一个示例:

package main

import "fmt"

const (
    Monday = iota + 1
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    Sunday
)

func main() {
    fmt.Println("Monday:", Monday)
    fmt.Println("Tuesday:", Tuesday)
    fmt.Println("Sunday:", Sunday)
}

总结

变量和常量是Go语言中用于存储和管理数据的重要概念。可以使用 var 关键字声明变量,可以显式指定类型或进行类型推断。常量使用 const 关键字声明,并在声明时必须赋予初始值。同时,Go语言支持同时声明多个变量,并使用常量组来模拟枚举。这些特性使我们能够有效地处理数据,并编写更清晰和可维护的代码。

4.控制流

控制流是编程中用于决定程序执行路径的关键概念。在Go语言中,使用条件语句、循环和开关语句来控制程序的执行流程。以下是对控制流的详细解释,以及附带的代码示例。

条件语句:if、else if 和 else

在Go中,使用 ifelse ifelse 语句来进行条件判断。下面是一个示例,展示如何使用这些语句:

package main

import "fmt"

func main() {
    num := 10

    if num > 5 {
        fmt.Println("Number is greater than 5")
    } else if num == 5 {
        fmt.Println("Number is equal to 5")
    } else {
        fmt.Println("Number is less than 5")
    }
}

循环:for 循环和 range 迭代

在Go中,使用 for 循环进行迭代。除了常见的 for i := 0; i < n; i++ 形式外,Go还支持 for 用作 while 循环。

package main

import "fmt"

func main() {
    // 常规的 for 循环
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }

    // 当作 while 使用
    sum := 0
    for sum < 10 {
        sum += 2
        fmt.Println("Sum:", sum)
    }
}

此外,使用 range 关键字可以遍历切片、数组、映射、通道等集合。

package main

import "fmt"

func main() {
    numbers := []int{1, 2, 3, 4, 5}

    for index, value := range numbers {
        fmt.Printf("Index: %d, Value: %d\n", index, value)
    }
}

开关语句:switch

switch 语句用于根据不同情况选择执行的分支。它可以与常规的 case 一起使用,也可以与值的比较一起使用。

package main

import "fmt"

func main() {
    day := "Monday"

    switch day {
    case "Monday":
        fmt.Println("It's the first day of the week")
    case "Friday":
        fmt.Println("It's the last workday of the week")
    default:
        fmt.Println("It's just another day")
    }
}

总结

控制流是程序中决定执行路径的关键部分。在Go语言中,使用 ifelse ifelse 来进行条件判断,使用 for 循环进行迭代,还可以使用 range 迭代集合。switch 语句用于根据不同情况选择执行的分支。这些控制流结构使程序能够根据不同条件做出不同的决策和动作,从而实现更复杂的逻辑。

全部评论

相关推荐

点赞 评论 收藏
分享
投票
我要狠拿offer:如果不是必须去成都绝对选九院呀,九院在四川top1研究所了吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务