自学内容网 自学内容网

go基本知识与语法入门

Go 语言(又称 Golang)是一种由 Google 开发的开源编程语言,设计目标是简洁、高效、并发友好,适合用于构建高性能的系统和网络应用程序。Go 语言的语法相对简单,非常适合大规模软件开发。

1. 基本结构

Go 程序的基本结构非常简单,一个 Go 程序的最小单元就是一个包含 main 函数的包(package):

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
  • package main:定义包名,这里是 main,表示该文件是可执行程序的入口点。
  • import "fmt":引入标准库中的 fmt 包,用于格式化 I/O 操作。
  • func main():定义程序的入口函数,Go 程序从 main 函数开始执行。

2. 变量声明和类型

Go 是静态类型语言,变量在使用之前必须声明。可以使用 var:= 来声明变量。

使用 var 声明:
var x int = 10
var name string = "Alice"
使用短声明 := 声明(常用于局部变量):
x := 10
name := "Alice"

Go 具有自动类型推导功能,因此你可以省略变量类型,Go 会根据右侧的值推导出类型。

常见的类型:
  • 基本数据类型:int, float32, float64, string, bool
  • 复合类型:arrayslicemapstructinterface
  • 指针类型:Go 具有指针,但没有指针算术。

3. 控制结构

Go 提供了常见的控制结构,如条件语句、循环和跳转语句。

条件语句 if
if x > 10 {
    fmt.Println("x is greater than 10")
} else {
    fmt.Println("x is less than or equal to 10")
}
循环 for

Go 只有一种循环结构:for。它有三种形式:

  1. 普通循环:
for i := 0; i < 5; i++ {
    fmt.Println(i)
}
  1. 条件循环:
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}
  1. 无限循环:
for {
    // 永久执行的代码
}
switch 语句:

Go 的 switch 是一种类似于 C 的 switch 语句,但它可以自动“fall-through”(直接跳到下一个 case),也可以加上 break 来防止这个行为。

switch x {
case 1:
    fmt.Println("x is 1")
case 2:
    fmt.Println("x is 2")
default:
    fmt.Println("x is neither 1 nor 2")
}

4. 函数

函数在 Go 中也是第一类对象,可以被传递和赋值。函数的声明形式如下:

func add(a int, b int) int {
    return a + b
}
  • func 是关键字,用于定义函数。
  • add 是函数名,a int, b int 是参数,int 是返回值的类型。

Go 也支持多返回值:

func swap(a, b int) (int, int) {
    return b, a
}

5. 数组和切片

Go 具有静态数组和动态切片。数组的大小是固定的,而切片是一个灵活的数据结构,可以动态增长。

数组:
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
切片:
slice := []int{1, 2, 3} // 创建一个切片
slice = append(slice, 4) // 向切片添加元素

6. 结构体(Struct)

Go 使用结构体来表示复合数据类型,它与类相似,但 Go 不支持面向对象的继承。

type Person struct {
    Name string
    Age  int
}

p := Person{Name: "Alice", Age: 30}
fmt.Println(p.Name) // 访问结构体字段

7. 接口(Interface)

Go 使用接口来实现多态。接口类型指定了某些方法的集合,但并不需要明确声明接口的实现。

type Speaker interface {
    Speak() string
}

type Person struct {
    Name string
}

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

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

p := Person{Name: "Alice"}
greet(p) // 输出:Hello, Alice

8. 并发

Go 对并发编程有内置的支持,通过 goroutinechannel 进行协作式多任务处理。

Goroutines:

Goroutines 是 Go 的轻量级线程,启动一个 goroutine 只需要使用 go 关键字。

go func() {
    fmt.Println("This runs concurrently")
}()
Channels:

Channel 是用来在 goroutines 之间传递数据的管道。

ch := make(chan int)
go func() {
    ch <- 42
}()
fmt.Println(<-ch) // 从 channel 中接收数据

总结

Go 语言的设计目标是简洁、并发和高效,它提供了很多优秀的特性,如垃圾回收、内存安全、强类型系统、并发支持等。它适用于从系统编程到网络服务等各种应用领域。通过简洁的语法和工具,Go 能帮助开发者更容易地编写可靠的高性能应用。


原文地址:https://blog.csdn.net/weixin_45056021/article/details/144645507

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!