一、输出

Println 和 Print 区别

  • Println 会自动换行输出,Print 不会自动换行输出。

    package main
    
    import(
        "fmt"
    )
    
    func main(){
        fmt.Println("hello, golang!")
        fmt.Print("hello, golang!")
    }

    输出:

    hello, golang!
    hello, golang!
  • 一次输出多个值,Println 中间会有空格,Print 没有空格。

    package main
    
    import(
        "fmt"
    )
    
    func main(){
        fmt.Println("A", "B", "C")
        fmt.Print("A", "B", "C")
    }

    输出:

    A B C
    ABC

Println 和 Printf 区别

  • Printf 是格式化输出

    package main
    
    import(
        "fmt"
    )
    
    func main(){
        var a = "aaa"
    
        fmt.Println(a)
        fmt.Printf("%v", a)
    }

    输出:

    aaa
    aaa

二、变量与常量

打印变量类型

类型推导方式

package main

import(
    "fmt"
)

func main(){
    a := 10

    fmt.Printf("a = %v, type(a) = %T", a, a)
}

输出:

a = 10, type(a) = int
  • 常量定义完必须赋值,变量可以先定义,再赋值。

  • 变量可以修改,常量不可以修改。

const

const 同时声明多个常量,但是只给第一个赋值,则其他常量值和第一个值相同。

package main

import(
    "fmt"
)

func main(){
    const (
        n1 = 100
        n2
        n3
    )

    fmt.Println(n1, n2, n3)
}

输出:

100 100 100

iota

计数器,每次碰到 const 自动加一。

package main

import(
    "fmt"
)

func main(){
    const a = iota
    fmt.Println(a)

    const(
        n1 = iota
        n2
        n3
    )
    fmt.Println(n1, n2, n3)
}

输出:

0
0 1 2

iota 插队

package main

import(
    "fmt"
)

func main(){
    const(
        n1 = iota
        n2 = 100
        n3 = iota
        n4
    )
    fmt.Println(n1, n2, n3, n4)
}

输出:

0 100 2 3

三、命名规则

标识符:分大小写,必须以字母、下划线开头,紧跟 0 个或多个字符或 Unicode 数字。驼峰命名规则

无效标识符:

  • 1ab(以数字开头)
  • case(Go 语言的关键字)
  • a+b(运算符是不允许的)

25 个关键字或保留字,关键字不能够作标识符使用。

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

四、Go 语言代码风格

  • 代码每一行后面不需要加 ; 这个符号。
  • 运算符(例如等号 =)左右建议各加一个空格。
  • 驼峰命名规则,第一个单词小写,后面单词首字母大写。
  • 强制代码风格,左括号紧接语句不换行,右括号换行。
  • go fmt 用于格式化文档,执行 go fmt main.go 命令可以自动规范代码风格。

五、参考教程

Golang 教程 P1-P5