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