方法调用初探与 time 包
- 方法概念:Go 的方法类似于附加在“对象”(这里是特定类型的值)上的函数,调用方式为
变量.方法名()。 - 获取当前时间:需导入
"time"包。time.Now()函数返回一个time.Time类型的值,代表当前日期和时间。 - 调用 Year 方法:
time.Time类型拥有Year()方法,用于返回年份整数。
package main
import (
"fmt"
"time"
)
func main() {
var now time.Time = time.Now() // 获取当前时间
var year int = now.Year() // 调用方法提取年份
fmt.Println(year) // 输出示例: 2020(取决于系统时间)
}Code language: JavaScript (javascript)
串联知识:这里结合了前文的包导入(可见性规则,Now、Year 均大写导出)、变量声明(可简写为 now := time.Now())与 go run 执行。
strings 包与替换器(Replacer)
- 核心逻辑:
strings.NewReplacer用于创建一个替换器,可将字符串中的特定子串替换为目标子串。 - 链式调用:先定义替换规则(旧字符,新字符),再对目标字符串执行
Replace方法。
package main
import (
"fmt"
"strings"
)
func main() {
broken := "G# r#cks!"
// 创建替换器:将 "#" 替换为 "o"
replacer := strings.NewReplacer("#", "o")
// 执行替换
fixed := replacer.Replace(broken)
fmt.Println(fixed) // 输出: Go rocks!
}Code language: CSS (css)
实际输出验证:结合终端编译输出,最终打印了 2020(年份)与 Go rocks(替换结果),进程成功退出。
代码例子
将两节示例合并(对应图中最终输出):
package main
import (
"fmt"
"strings"
"time"
)
func main() {
// 1. 时间获取与方法调用
now := time.Now()
fmt.Println(now.Year()) // 输出: 2020
// 2. 字符串替换方法
broken := "G# r#cks!"
replacer := strings.NewReplacer("#", "o")
fmt.Println(replacer.Replace(broken)) // 输出: Go rocks!
}Code language: JavaScript (javascript)
| 知识点 | 本例体现 | 历史关联 |
|---|---|---|
| 包与可见性 | "time", "strings" 导入;Now(), Year(), NewReplacer 大写导出 | 第11节命名规则(大写可跨包访问) |
| 方法调用 | now.Year(), replacer.Replace() | 类似“对象”行为,后续章节详述 |
| 短变量声明 | now := time.Now() | 第10节 := 推断类型 |
| 类型安全 | now 是 time.Time,replacer 是 *strings.Replacer,不可混用 | 第12-13节类型严格性 |
方法调用是 Go 面向对象特性的雏形。当前只需掌握“类型值.方法()”的语法;time 和 strings 是标准库高频包,配合 go fmt 与 go run 可高效验证。