Go语言基础入门指南
1. 包管理基础
Go语言通过包(package)来组织代码结构,理解包管理是Go开发的基础。
核心概念
- 一个文件夹就是一个包
- 同一包下的文件必须声明相同的包名
- 包分为两种类型:
main包:包含main函数,是程序入口,编译生成可执行文件- 非
main包:用于代码分类和组织
包的使用规范
// 文件位置:utils/helper.go
package utils
// 首字母大写表示可被其他包访问
func PublicFunc() {
// ...
}
// 首字母小写表示私有,仅限包内使用
func privateFunc() {
// ...
}
导入其他包
package main
import (
"fmt"
"project/utils" // 导入自定义包
)
func main() {
utils.PublicFunc() // 调用其他包中的函数
fmt.Println("Hello, Go!")
}
2. 基础输出
Go提供了多种输出方式:
常用输出方法
package main
import "fmt"
func main() {
// 内置函数(不推荐生产环境使用)
print("简单输出 ")
println("带换行输出")
// fmt包(推荐)
fmt.Print("格式化输出 ")
fmt.Println("带换行输出")
// 格式化输出
name := "Alex"
age := 30
fmt.Printf("姓名:%s 年龄:%d\n", name, age)
// 常用占位符:
// %s - 字符串
// %d - 整数
// %f - 浮点数
// %.2f - 保留两位小数
// %% - 百分号
}
3. 注释规范
良好的注释习惯对团队协作至关重要:
// 单行注释
/*
多行注释
用于说明复杂逻辑
*/
// 快捷注释:Ctrl+/ (大多数IDE支持)
4. 基本数据类型
Go是强类型语言,基础类型包括:
整型
num := 42 // 自动推断为int
var count int32 = 100 // 显式声明32位整数
// 算术运算
sum := 10 + 5
diff := 10 - 5
product := 10 * 5
quotient := 10 / 3 // 商
remainder := 10 % 3 // 余数
字符串
str1 := "Hello"
str2 := "世界"
// 字符串拼接
message := str1 + " " + str2
// 字符串不可变
// str1[0] = 'h' // 错误
布尔型
isTrue := true
isFalse := false
// 比较运算
result := 10 > 5 // true
equal := "a" == "A" // false
5. 变量与常量
变量声明
// 标准声明
var name string = "Alice"
// 类型推断
var age = 30
// 简短声明(函数内使用)
score := 100
// 多变量声明
var a, b, c int = 1, 2, 3
x, y := "x", "y"
变量命名规范
- 只包含字母、数字、下划线
- 不能以数字开头
- 避免使用Go关键字
- 推荐驼峰命名法:
userName,totalCount
常量定义
const Pi = 3.14159
const MaxRetry = 3
// 常量组
const (
StatusOK = 200
StatusNotFound = 404
)
// iota枚举
const (
Monday = iota + 1 // 1
Tuesday // 2
Wednesday // 3
// ...
)
6. 用户输入
基本输入方法
package main
import "fmt"
func main() {
var name string
var age int
// Scanln示例
fmt.Print("请输入姓名和年龄: ")
_, err := fmt.Scanln(&name, &age)
if err != nil {
fmt.Println("输入错误:", err)
return
}
fmt.Printf("你好 %s, 你今年 %d 岁\n", name, age)
// Scanf示例
fmt.Print("请输入(姓名 年龄): ")
_, err = fmt.Scanf("%s %d", &name, &age)
if err != nil {
fmt.Println("输入错误:", err)
return
}
fmt.Printf("你好 %s, 你今年 %d 岁\n", name, age)
}
读取整行输入
import (
"bufio"
"os"
)
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入完整地址: ")
address, _ := reader.ReadString('\n')
fmt.Println("地址是:", address)
7. 条件语句
基本if-else
if condition {
// 条件为真执行
} else {
// 条件为假执行
}
多条件判断
score := 85
if score >= 90 {
fmt.Println("A")
} else if score >= 80 {
fmt.Println("B")
} else if score >= 60 {
fmt.Println("C")
} else {
fmt.Println("D")
}
嵌套条件
if user.IsAuthenticated() {
if user.HasPermission("admin") {
fmt.Println("欢迎管理员")
} else {
fmt.Println("欢迎普通用户")
}
} else {
fmt.Println("请先登录")
}
实战练习
1. 用户名验证
package main
import "fmt"
func main() {
var input string
fmt.Print("请输入用户名: ")
fmt.Scanln(&input)
if input == "麻花藤" {
fmt.Println("真聪明")
} else {
fmt.Println("你是傻逼么")
}
}
2. 计算两数之和
package main
import "fmt"
func main() {
var a, b int
fmt.Print("请输入两个数字(用空格分隔): ")
fmt.Scanln(&a, &b)
fmt.Printf("两数之和: %d\n", a+b)
}
3. 信息拼接
package main
import "fmt"
func main() {
var name, location, action string
fmt.Print("请输入姓名: ")
fmt.Scanln(&name)
fmt.Print("请输入位置: ")
fmt.Scanln(&location)
fmt.Print("请输入行为: ")
fmt.Scanln(&action)
fmt.Printf("%s在%s做%s\n", name, location, action)
}
4. 数字猜测游戏
package main
import "fmt"
func main() {
const target = 66
var guess int
fmt.Print("请输入猜测的数字: ")
fmt.Scanln(&guess)
if guess > target {
fmt.Println("猜大了")
} else if guess < target {
fmt.Println("猜小了")
} else {
fmt.Println("猜对了!")
}
}
5. 成绩等级转换
package main
import "fmt"
func main() {
var score int
fmt.Print("请输入成绩(0-100): ")
fmt.Scanln(&score)
switch {
case score >= 90:
fmt.Println("A")
case score >= 80:
fmt.Println("B")
case score >= 60:
fmt.Println("C")
case score >= 40:
fmt.Println("D")
default:
fmt.Println("E")
}
}
生产环境建议
- 变量命名:使用有意义的名称,避免v1、v2等无意义命名
- 错误处理:始终检查输入函数的错误返回值
- 包组织:合理划分包结构,避免将所有代码放在main包中
- 常量使用:魔法数字应该定义为常量
- 输入验证:对用户输入进行有效性检查
通过掌握这些基础概念,你已经可以开始用Go语言编写简单的应用程序了。在实际开发中,这些基础知识将作为你构建更复杂系统的基石。
浙公网安备 33010602011771号