Go基础语法

102 阅读3分钟

特点

  • 1.高性能、高并发
  • 2.语法简单、学习曲线平缓
  • 3.丰富的标准库
  • 4.完善的工具链
  • 5.静态链接
  • 6.快速编译
  • 7.跨平台
  • 8.垃圾回收

语法

变量、常量

  1. 变量声明和初始化:

    goCopy code
    var a = "initial"
    
    • var关键字用于声明一个变量。
    • 变量的类型可以通过初始化值来推断,因此这里没有显式指定类型。
    • 这里的变量a被初始化为字符串"initial"。
  2. 多变量声明和初始化:

    goCopy code
    var b, c int = 1, 2
    
    • 在一行上,你可以声明并初始化多个变量。
    • 这里的变量bc被初始化为整数1和2。
  3. 简短变量声明:

    goCopy code
    d := true
    
    • 简短变量声明使用:=来声明并初始化变量,Go会自动推断变量的类型。
    • 这里的变量d被初始化为布尔值true
  4. 零值初始化:

    goCopy code
    var e float64
    
    • 当一个变量被声明而没有被显式初始化时,它将被初始化为其类型的零值。对于float64类型,零值为0.0
  5. 类型转换:

    goCopy code
    f := float32(e)
    
    • Go中的类型转换需要显式声明类型。这里将efloat64类型)转换为float32类型。
  6. 字符串拼接:

    goCopy code
    g := a + "foo"
    
    • 字符串可以使用+运算符进行拼接。
    • 这里将变量a和字符串"foo"拼接成字符串"g"。
  7. 常量声明:

    goCopy code
    const s string = "constant"
    const h = 500000000
    const i = 3e20 / h
    
    • const关键字用于声明常量。
    • 常量可以是字符串、数值等。
    • i被初始化为数学表达式的结果,表达式使用了h
  8. 使用标准库函数:

    goCopy code
    fmt.Println(a, b, c, d, e, f)
    fmt.Println(g)
    fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
    
    • fmt.Println()函数用于格式化输出内容到标准输出。

与C++相比,Go语言在变量声明、初始化和类型推断上有一些不同之处。例如,Go在变量声明时允许使用:=进行简短变量声明,且类型可以根据初始化值进行推断,这减少了重复的类型信息。

循环

  1. 无限循环:

    goCopy code
    i := 1
    for {
        fmt.Println("loop")
        break
    }
    
    • 在Go语言中,你可以使用for {}语法创建一个无限循环。
    • 通过break语句来终止循环,这样它只会执行一次。
  2. 基本循环:

    goCopy code
    for j := 7; j < 9; j++ {
        fmt.Println(j)
    }
    
    • 这是一个常见的for循环,具有初始化、条件和递增语句。
    • 它会输出7和8,因为循环在j小于9时执行。
  3. 跳过循环迭代:

    goCopy code
    for n := 0; n < 5; n++ {
        if n%2 == 0 {
            continue
        }
        fmt.Println(n)
    }
    
    • 使用continue语句可以跳过当前循环迭代,继续下一次迭代。
    • 在这个例子中,只有当n为奇数时,才会输出n的值。
  4. 循环条件:

    goCopy code
    for i <= 3 {
        fmt.Println(i)
        i = i + 1
    }
    
    • 在循环中,你可以使用一个简化的形式,只使用循环条件来控制循环。
    • 这个循环会输出1、2、3,然后停止。

总结与比较:

  • 在Go中,循环的基本结构与C++相似,但有一些细微差异,比如初始化变量的位置,以及for {}形式的无限循环。
  • Go中的continue语句和C++中的类似,用于跳过当前迭代。
  • Go语言中没有像C++中的while循环,但你可以通过只使用条件来模拟。