GoLang Learn Data Day 0

原帖地址:https://www.cnblogs.com/Reisentyan/p/19710370

现代最流行的后端语言应该就是go语言了吧,性能这么高。如果我的服务器不写go语言的话说不定就会卡爆了。

这里进行一点点简单的学习

1. Go 的标准模板

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

go 复制代码
// 传统声明法(带有默认初始值 0)
var a int
var b float64

// 编译器会自动推导类型,只能在函数内部使用
c := 10 
d := 3.14 

4. 常见避坑点

浮点数陷阱

math.Ceil() 向上取整出来的结果依然是浮点数 (比如 3.00000)。 如果需要当做整数输出或参与整数运算,必须手动强制转换类型,或者使用格式化输出:

go 复制代码
// 强转成 int
int(math.Ceil(3.14)) 

// 或者通过格式化去掉小数位
fmt.Printf("%.0f", math.Ceil(3.14))

严格的 if-else 格式

Go 的 if-else 语句排版非常死板(说实话,习惯了 C++ 的自由度后,一开始确实有点唐)。

核心铁律: else 必须紧紧贴在上一段的右大括号 } 后面,条件判断不需要加小括号 ()

Go

复制代码
if a > 0 {
    // 处理大于 0 的情况
} else if a == 0 {
    // 处理等于 0 的情况
} else {
    // 处理其他情况
}

5. 循环 (Loop)

Go 语言里没有 while 关键字 ,所有的循环全部由 for 承担。

Go

复制代码
// 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,可以动态扩容。

go 复制代码
s := []int{0, 1, 2}

// 追加元素
s = append(s, 100)

// 预分配空间
// make 创建一个长度为 n,初始值全为 0 的切片
s2 := make([]int, n)
相关推荐
大草原的小灰灰14 分钟前
Python基础语法
开发语言·python
泡泡鱼(敲代码中)2 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
潜创微科技3 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
Escalating_xu4 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊4 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
cvby4 小时前
C++11
开发语言·c++
ch.ju5 小时前
Java—idea知识:如何创建新项目
java·开发语言·intellij-idea
Evand J5 小时前
【MATLAB例程,图像滤波降噪12】加权中值滑动窗口滤波(WMF)图像降噪,包含滤波质量评价。附代码下载链接
开发语言·图像处理·人工智能·计算机视觉·matlab·滑动窗口·滤波
Tairitsu_H5 小时前
[C++] C++11类和STL的新特性
开发语言·c++·stl·c++11
承渊政道5 小时前
Python IDLE鸿蒙PC适配全记录:从Tkinter桌面程序到ArkUI原生开发闭环
开发语言·python·harmonyos·鸿蒙系统·桌面程序