GoLang Learn Data Day 0有哪些技巧可以学习?

摘要:原帖地址:https:www.cnblogs.comReisentyanp19710370 现代最流行的后端语言应该就是go语言了吧,性能这么高。如果我的服务器不写go语言的话说不定就会卡爆了。 这里进行一点点简单的学习 1. G
原帖地址:https://www.cnblogs.com/Reisentyan/p/19710370 现代最流行的后端语言应该就是go语言了吧,性能这么高。如果我的服务器不写go语言的话说不定就会卡爆了。 这里进行一点点简单的学习 1. Go 的标准模板 Go 对代码格式有强制要求,左大括号 { 必须和函数名在同一行,绝对不能换行写! package main import ( "fmt" "math" // 数学库 ) func main() { // 你的代码写在这里 } 2. 输入与输出 (I/O) Go 语言不推荐在句尾写分号 ; fmt.Scan(&a) // 格式化输出 fmt.Printf("%d\n", a) // 补充:最常用的自带换行输出 fmt.Println("Hello, Luogu!") 3. 变量声明 Go 推荐在绝大多数情况下使用 float64 而不是 float32,因为 math 库里的函数(如开根号、取整)全部只接收 float64。 // 传统声明法(带有默认初始值 0) var a int var b float64 // 编译器会自动推导类型,只能在函数内部使用 c := 10 d := 3.14 4. 常见避坑点 浮点数陷阱 math.Ceil() 向上取整出来的结果依然是浮点数(比如 3.00000)。 如果需要当做整数输出或参与整数运算,必须手动强制转换类型,或者使用格式化输出: // 强转成 int int(math.Ceil(3.14)) // 或者通过格式化去掉小数位 fmt.Printf("%.0f", math.Ceil(3.14)) 严格的 if-else 格式 Go 的 if-else 语句排版非常死板(说实话,习惯了 C++ 的自由度后,一开始确实有点唐)。 核心铁律: else 必须紧紧贴在上一段的右大括号 } 后面,条件判断不需要加小括号 ()。 if a > 0 { // 处理大于 0 的情况 } else if a == 0 { // 处理等于 0 的情况 } else { // 处理其他情况 } 5. 循环 (Loop) Go 语言里没有 while 关键字,所有的循环全部由 for 承担。 // 1. 标准的三段式循环 for i := 1; i <= n; i++ { // 正常循环 } // 2. 补充:等同于 while 的写法 for n > 0 { // 只要 n > 0 就一直循环 n-- } // 3. 遍历容器的神器:range for i, v := range arr { // i 是下标 (index) // v 是具体的值 (value) } 6. 数组 vs 切片 (Slice) Go 中几乎不用数组 (Array),因为它的长度是不可变的,而且长度会被算作类型的一部分,相当于 C++ 中的 std::tuple 或者是写死的静态数组。 刷题和日常开发中,一般使用切片 (Slice),它相当于 C++ 的 std::vector,可以动态扩容。 s := []int{0, 1, 2} // 追加元素 s = append(s, 100) // 预分配空间 // make 创建一个长度为 n,初始值全为 0 的切片 s2 := make([]int, n)