Skip to main content

基础语法

Go 的程序骨架:包、导入、变量与可见性规则。

package 与 import

每个 .go 文件第一行是包声明。可执行入口包必须是 main

package main

import (
"fmt"
"math"
)

func main() {
fmt.Println(math.Sqrt(9))
}
  • 单导入:import "fmt"
  • 多导入:用括号分组(go fmt 会整理顺序)
  • 可用别名:import m "math",然后 m.Sqrt
  • 下划线导入仅执行 initimport _ "image/png"(副作用导入)

未使用的导入会编译失败——这是刻意的。

变量与常量

var name string = "xiping"
var age = 18 // 类型推断
pi := 3.14 // 短声明,只能在函数内
const MaxRetry = 3
写法说明
var x T声明为类型 T,值为零值
var x = v由右侧推断类型
x := v短声明;至少有一个新变量
const编译期常量

一次声明多个:

var a, b int = 1, 2
x, y := "hi", true

零值

未显式赋值的变量不是「未定义」,而是类型的零值:

类型零值
数值0
boolfalse
string""
指针 / slice / map / channel / 函数 / interfacenil
var n int
var s string
fmt.Println(n, s == "") // 0 true

可见性(导出)

Go 用首字母大小写控制包外是否可见:

  • 大写开头:导出(Exported),包外可访问,如 fmt.Println
  • 小写开头:包内私有,如 fmt.println 不存在
package greeter

func Hello() string { // 导出
return hello()
}

func hello() string { // 包内
return "hi"
}

没有 public / private 关键字;跨包只能用导出标识符。

运算符与基本字面量

算术:+ - * / %;比较:== != < > <= >=;逻辑:&& || !;位运算:& | ^ &^ << >>

a, b := 7, 2
fmt.Println(a/b, a%b) // 3 1(整数除法截断)

字符串用双引号;原始字符串用反引号(可含换行、不转义):

s := "line\n"
raw := `path\not\escaped`

小结

  1. 文件属某个 package;入口是 package main + func main
  2. 优先在函数内用 :=;包级用 var / const
  3. 记住零值,少写无意义的初始化
  4. 导出靠首字母大写

上一篇:环境与工具链 · 下一篇:类型与复合类型