Go语言基础语法

本文介绍了Go语言的基本概念,包括Hello,World程序、变量和类型、流程控制语句、函数和包、数组与切片、结构体与方法,以及并发编程的goroutine和channel。

Go语言是一种简洁、高效、并发的编程语言,具有强大的标准库和丰富的生态系统。在本篇文章中,我们将介绍Go语言的基础语法,并提供相应的源代码示例。

  1. Hello, World!

让我们从经典的 “Hello, World!” 程序开始。在Go语言中,打印输出可以通过使用标准库中的 fmt 包实现。

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}
  1. 变量和类型

在Go语言中,我们可以使用 var 关键字声明变量。Go是一种静态类型语言,变量的类型在声明时就需要指定。

package main

import "fmt"

func main() {
    var message string
    message = "Hello, Go!"
    fmt.Println(message)

    var number int = 10
    fmt.Println(number)

    var isTrue bool
    isTrue = true
    fmt.Println(isTrue)
}

除了使用 var 关键字外,我们还可以使用短变量声明 := 来进行变量声明和初始化的简写。

package main

import "fmt"

func main() {
    message := "Hello, Go!"
    fmt.Println(message)

    number := 10
    fmt.Println(number)

    isTrue := true
    fmt.Println(isTrue)
}

Go语言支持多种基本数据类型,包括整数类型(intint8int16int32int64)、无符号整数类型(uintuint8uint16uint32uint64)、浮点数类型(float32float64)、布尔类型(bool)、字符串类型(string)等。

  1. 流程控制

Go语言提供了常见的流程控制语句,如条件语句(if-else)、循环语句(for)和选择语句(switch)。

package main

import "fmt"

func main() {
    // 条件语句
    number := 10
    if number > 0 {
        fmt.Println("Number is positive")
    } else if number < 0 {
        fmt.Println("Number is negative")
    } else {
        fmt.Println("Number is zero")
    }

    // 循环语句
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
    }

    // 选择语句
    day := "Sunday"
    switch day {
    case "Monday":
        fmt.Println("It's Monday")
    case "Tuesday":
        fmt.Println("It's Tuesday")
    case "Wednesday":
        fmt.Println("It's Wednesday")
    case "Thursday":
        fmt.Println("It's Thursday")
    case "Friday":
        fmt.Println("It's Friday")
    case "Saturday":
        fmt.Println("It's Saturday")
    default:
        fmt.Println("It's Sunday")
    }
}
  1. 函数和包

在Go语言中,函数是基本的代码块,用于执行特定的任务。我们可以使用 func 关键字定义函数,并指定参数和返回值的类型。

package main

import "fmt"

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

func main() {
    result := add(10, 20)
    fmt.Println(result)
}

Go语言通过包(package)来组织代码。一个包可以包含多个源文件,并且通过 import 关键字引入其他包。

  1. 数组和切片

Go语言提供了数组(array)和切片(slice)两种数据结构来存储多个相同类型的元素。

package main

import "fmt"

func main() {
    // 数组
    var numbers [3]int
    numbers[0] = 1
    numbers[1] = 2
    numbers[2] = 3
    fmt.Println(numbers)

    // 切片
    fruits := []string{"apple", "banana", "orange"}
    fmt.Println(fruits)
}

切片是动态数组,具有动态大小和灵活的操作。我们可以使用内置的 make 函数来创建切片,并使用索引和切片操作来访问和修改元素。

package main

import "fmt"

func main() {
    // 创建切片
    numbers := make([]int, 3)
    numbers[0] = 1
    numbers[1] = 2
    numbers[2] = 3
    fmt.Println(numbers)

    // 切片操作
    fruits := []string{"apple", "banana", "orange"}
    fmt.Println(fruits[0])        // 输出:apple
    fmt.Println(fruits[1:3])      // 输出:[banana orange]
    fmt.Println(fruits[:2])       // 输出:[apple banana]
    fmt.Println(fruits[1:])       // 输出:[banana orange]

    // 修改切片元素
    fruits[0] = "pear"
    fmt.Println(fruits)           // 输出:[pear banana orange]

    // 添加元素到切片末尾
    fruits = append(fruits, "grape")
    fmt.Println(fruits)           // 输出:[pear banana orange grape]
}
  1. 结构体和方法

Go语言支持面向对象编程的概念,可以通过结构体(struct)和方法(method)来定义自定义类型和关联的行为。

package main

import "fmt"

type Person struct {
    name string
    age  int
}

func (p Person) sayHello() {
    fmt.Printf("Hello, my name is %s and I'm %d years old\n", p.name, p.age)
}

func main() {
    p := Person{name: "Alice", age: 25}
    p.sayHello()
}

在上面的例子中,我们定义了一个 Person 结构体,包含 nameage 两个字段。然后,我们为 Person 结构体定义了一个 sayHello 方法,用于输出个人信息。

  1. 并发编程

Go语言内置了并发编程的支持,通过 goroutinechannel 实现并发执行和通信。

package main

import (
    "fmt"
    "time"
)

func printNumbers() {
    for i := 1; i <= 5; i++ {
        fmt.Println(i)
        time.Sleep(1 * time.Second)
    }
}

func printLetters() {
    for i := 'a'; i <= 'e'; i++ {
        fmt.Println(string(i))
        time.Sleep(1 * time.Second)
    }
}

func main() {
    go printNumbers()
    go printLetters()

    time.Sleep(6 * time.Second)
}

在上面的例子中,我们定义了两个函数 printNumbersprintLetters,分别用于打印数字和字母。通过使用 go 关键字,我们可以启动两个并发的 goroutine 来同时执行这两个函数。为了确保主程序不会在两个 goroutine 执行完之前退出,我们在主函数中使用 time.Sleep 函数进行等待。

这只是Go语言基础语法的一个简要介绍。Go语言还有许多其他特性和功能,例如错误处理、接口、包管理等。希望本篇文章能够帮助你入门Go语言,并激发你进一步探索和学习的兴趣。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值