初面网初面网

环境配置与基本格式

环境配置

国内镜像

查看go环境配置

go env

修改镜像

go env -w GO111MODULE=on

go env -w GOPROXY=https://goproxy.cn,direct

基本格式

package main    // 定义包

import "fmt"

func main() {
    fmt.Println("hello")
    fmt.Print(" world")
    // fmt.Printf(" world")
    fmt.Println("hh","mm")  // 一行结束自动换行,中间有空格分割:hh mm
    fmt.Print("hh","mm")    // 一行结束不会换行,中间无空格分割:hhmm

    // ===========

    a :=10
    b :=20
    c :=30
    fmt.Printf("a=%d,b=%d,c=%d", a,b,c)
}

/*
func test() {
    // anycode
}
*/

变量、常量

绝对不可以只定义不使用。定义了就一定要使用

// 方法一
// var 变量名 类型 = 表达式

var name string = "tony"    // 类型不是必写的。var name = "tony"也可以。注释里的这种写法会让系统自动推导类型

// 可以只声明不定义
var name1 string

fmt.Print(name1)    // 由于没有定义(即没有初始化),name1的值为空

// ===================

// 方法二
// 这种方法会自动推导变量类型
// 只能在函数中使用这种写法
a := 10

b,c,d := 12,true,"d"    // 可以同时定义多个变量

// ===================

// 方法三
// 多变量声明
var (
  name string
  age int
)

n1,n2 := 1,2

// 匿名变量
// 下划线表示匿名变量
func getInfo()(string, int){
    return "tony",10
}
var name, _ = getInfo() // 这样就只能取到name,age取不到了

// 常量
const PI = 3.1415926    // const定义。常量名称尽量用大写。常量值后续不可变更

// 多常量
const (
  A = "A"
  B = "B"
  C // 此时C的值缺省,会取前一个声明的值
)

iota

const zero = iota   // iota是go语言的保留字,代表初始化为0.

const (
  zero = iota   // 第一个是iota,后面的值会自增,也就是one=1,two=2
  one
  two
)

const (
  zero = iota   
  _             // 匿名变量会被跳过,但是自增还是生效,所以two=2,three=3
  two
  three
)

// iota可以插队
const (
  n1=iota   // 0
  n2=100    // 100
  n3=iota   // 2
  n4        // 3
)

// 多个iota定义在一行
const(
  n1,n2 = iota+1, iota+2    // 1,2
  n3, n4    // 2,3
  n5, n6    // 3,4
)

丰富的标准库

Go 的标准库覆盖了现代开发的大部分需求,无需引入第三方依赖即可完成常见任务。下表列出了最常用的标准库包:

包名功能典型用途
net/httpHTTP 客户端与服务端构建 Web 服务、RESTful API
encoding/jsonJSON 编解码API 数据序列化与反序列化
database/sql数据库访问接口配合驱动操作 MySQL、PostgreSQL 等
os操作系统交互文件读写、环境变量、进程管理
fmt格式化输入输出打印日志、格式化字符串
sync同步原语Mutex、WaitGroup、Once 等并发控制
testing测试框架单元测试、基准测试、示例测试
time时间处理计时器、定时器、时间格式化
context上下文传递超时控制、请求取消、值传递
ioI/O 抽象统一的读写接口
crypto加密算法哈希、对称/非对称加密、TLS
flag命令行参数解析CLI 工具开发

更新于 2026/8/13