go学习笔记 炒土豆丝

Agent Memory 工程实践 :用 Go + PostgreSQL 构建可证明、可撤销的长期记忆 状态对外含义必需证据revoked删除事务已提交;新权威复核排除旧代主库 Epoch 与删除请求在线存储和派生载体完成清理每个 carrier 的 purge receipt备份、日志、导出和模型服务等已到期或完成适用清理保留策略与外部系统记录“24 小时”只能是经验证的产品目标,不能泛化成法律或物理擦除保证。API 应返回请求 ID、当前状态、已覆盖与未覆盖范围,而非一个含混的success。删除事件到达后,标记相关工作集失效。 阅读详情

今天的主菜是土豆,就来个土豆丝吧。我的大致流程如下:
1.挑选白瓤土豆,洗它
2.土豆去皮
3.土豆切片,切丝,丝要粗细均匀
4.清洗几遍土豆丝,去除上面的淀粉,在清水中泡一小会
5.起锅,放适量水,烧开[适量实在是太抽象了]
6.备好葱花、姜丝、蒜、青/红辣椒丝
7.放入土豆丝,焯致八九分熟,或者看到土豆丝表面晶莹剔透,即可捞出放入凉水中
8.起锅,放油,放花椒、姜丝、辣椒丝
9.放入土豆丝快速翻炒
10.放入适量盐,蒜沫,翻炒一下
11.放入适量醋,再翻炒一下
12.出锅盛盘
13.撒上些葱花,开吃

package main

import (
	"fmt"
	"math/rand"
	"time"
)

// 定义常量,默认清洗时间
const default_wash_second int = 1

// 常量,土豆瓤的颜色
const (
	white  = "WHITE"
	yellow = "YELLOW"
)

/*******************************************************************************
 * 挑选土豆
 * color 土豆瓤的颜色
 ******************************************************************************/
func select_potato(color string) {
	fmt.Println("使用的是 [", color, "] 土豆")
}

/*******************************************************************************
 * 清洗土豆
 * sec 清洗时间,单位秒
 ******************************************************************************/
func wash_potato(sec uint) {
	fmt.Println("正在清洗土豆")
	time.Sleep(time.Duration(sec) * time.Second)
	fmt.Println("清洗完毕")
}

/*******************************************************************************
 * 去除土豆表皮
 * sec 清洗时间,单位秒
 ******************************************************************************/
func peel_potato(sec uint) {
	fmt.Println("正在去除土豆表皮,只是表皮,去除多了会浪费土豆")
	time.Sleep(time.Duration(sec) * time.Second)
	fmt.Println("去除土豆表皮完毕")
}

/*******************************************************************************
 * 将土豆切丝,土豆丝不是越细越好,而是要粗细均匀,宽厚一致,截面为正方形,
 * 土豆丝可以轻易捻动
 * width 土豆丝的宽度及厚度
 * sec 清洗时间,单位秒
 ******************************************************************************/
func shred_the_potato(width, sec uint) {
	fmt.Println("正在将土豆切成 [", width, "] mm 厚的薄片")
	time.Sleep(time.Duration(sec) * time.Second)
	fmt.Println("切片完成,准备切丝")
	fmt.Println("正在将土豆片切成 [", width, "] mm 厚的土豆丝")
	time.Sleep(time.Duration(sec) * time.Second)
	fmt.Println("土豆丝已切好")
}

/*******************************************************************************
 * 清洗土豆丝,清洗的目的是去除其表面的淀粉,这样炒出的土豆丝口感脆爽
 * 洗致水依然清澈,则可以不再清洗了,times并不是判断是否清洗好的标准
 * times 清洗次数
 ******************************************************************************/
func wash_potato_shreds(times uint) {
	var i uint = 0
	for i < times {
		fmt.Printf("第[%d]遍清洗\n", i+1)
		time.Sleep(time.Duration(default_wash_second) * time.Second)
		i++
	}
	fmt.Println("土豆丝已清洗好,浸泡片刻,这水好清澈啊......")
}

/*******************************************************************************
 * 取出土豆丝,准备使用
 ******************************************************************************/
func get_potato_shreds() {
	fmt.Println("沥干水分,取出土豆丝")
}

/*******************************************************************************
 * 烧水,准备焯土豆丝用
 ******************************************************************************/
func heat_up_water() {
	fmt.Println("起锅,放入适量水,直到烧开")
}

/*******************************************************************************
 * 趁烧水的空档,准备辅料
 ******************************************************************************/
func prepare_others() {
	fmt.Println("趁烧水的时间,准备辅料")
	time.Sleep(time.Duration(default_wash_second) * time.Second)
	fmt.Println("姜切丝、青红辣椒切丝")
	time.Sleep(time.Duration(default_wash_second) * time.Second)
	fmt.Println("切葱花、剁蒜沫")
	time.Sleep(time.Duration(default_wash_second) * time.Second)
	fmt.Println("辅料已备好")
}

/*******************************************************************************
 * 焯土豆丝
 ******************************************************************************/
func blanch_potato_shreds() {
	get_potato_shreds()
	fmt.Println("将土豆丝放入开水中,焯致八分熟\n捞出土豆丝放入凉水中备用")
	time.Sleep(time.Duration(default_wash_second) * time.Second)
}

/*******************************************************************************
 * 炒土豆丝喽
 ******************************************************************************/
func fry_potato_shreds() {
	fmt.Println("起锅,加入适量油,待油热,加入花椒、姜丝、辣椒丝,煸炒一下")
	time.Sleep(time.Duration(default_wash_second<<1) * time.Second)
	get_potato_shreds()
	fmt.Println("将土豆丝放入锅中,快速翻炒")
	time.Sleep(time.Duration(default_wash_second<<2) * time.Second)
	fmt.Println("加入蒜沫、适量盐,翻炒一下")
	time.Sleep(time.Duration(default_wash_second<<1) * time.Second)
	fmt.Println("加入适量醋,翻炒一下")
	time.Sleep(time.Duration(default_wash_second) * time.Second)
	if 0 == get_rand_number() {
		fmt.Println("出锅盛盘,撒上些葱花,开始享用啦")
	} else {
		fmt.Println("没控制好火候,炒糊啦!吃还是不吃,这是个问题啊")
	}

	time.Sleep(time.Duration(default_wash_second<<2) * time.Second)
}

/*******************************************************************************
 * 获取炒制成功或失败的标志
 ******************************************************************************/
func get_rand_number() int {
	my_rand := rand.New(rand.NewSource(time.Now().UnixNano()))

	return my_rand.Int() % 2
}

/*******************************************************************************
 * 炒好菜即刷锅,还是吃过菜后刷,好纠结啊
 ******************************************************************************/
func clear() {
	fmt.Println("不要忘记刷锅 -*-_-*-")
}

/*******************************************************************************
 * 制作流程
 ******************************************************************************/
func cook() {
	var sec uint = 1
	var width, times = uint(3), uint(4)

	select_potato(white)
	wash_potato(sec)
	peel_potato(sec)
	shred_the_potato(3, sec)
	wash_potato_shreds(4)
	heat_up_water()
	prepare_others()
	blanch_potato_shreds()
	fry_potato_shreds()
	clear()
}

/*******************************************************************************
 * guess what
 ******************************************************************************/
func main() {
	cook()
}

烹饪这道菜,我至少学会了如何使用 go 的标识符,变量、常量、注释、运算符及函数等。接下来做个总结:
[注]:很大部分来自官网,感兴趣的可以去逛逛。
通过前面hello world那篇简单的入门,我们知道第一行中的 package 是用来定义包的。

注释

注释主要起说明作用。好的注释可以方便别人及自己理解程序。
go 的注释有两种,分别为 Line comments(//) 和 General comments(/* */)

注释描述
Line comment从 // 开始到当前行结束
General comment从 /* 开始,到第一个 */ 结束

可以看到,go 与 C(C99)/C++ 中的注释风格是一致的。

示例

	// 这是一个Line comment
	/* 这是一个general comment,但是这个注释与行注释的表现是一样的 */
	/* 这也是一个general comment,
   	它的表现就和行注释不一样了 */

标识符

标识符,用来给程序中的实体命名。比如对变量,函数,结构体等命名,说白了就是给不同类型的变量起个唯一能标识它们的名字,仅此而已。
go 中合法的标识符,由一到多个字母、数字、下划线组成,且首字母不能为数字。注意,这里的字母是Unicode字母,即汉字可以作为变量名,但最好还是使用英文字符。

除了 go 使用 Unicode 字符作为标识符外,其他规则与 C/C++ 是一致的。

关键字

说到标识符,就不能不提关键字,关键字是 go 预先定义好的标识符,我们只能使用它们,而不能将它们用作自己的标识符。

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

结合着C/C++,Java,Python等,也就只有几个别的关键字没见过了,对 go 的恐惧一下子就减少了很多。

除了上面的 25 个关键字外,go 还预字义了以下的标识符,它们是全局的,仔细看一下,是不是很多也不陌生。
Types:(21个)

boolbytecomplex64complex128errorfloat32float64
intint8int16int32int64runestring
uintuint8uint16uint32uint64uintptr

Constants:(3个)

truefalseiota

Zero value:(只此一个)

nil

Functions:(15个)

appendcapclosecomplexcopydeleteimaglen
makenewpanicprintprintlnrealrecover

感觉有些多且乱?没关系,多见几次就熟悉它们了。

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例) 本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。 阅读详情

相关推荐

AMEsim不连续处理机制:仿真精度与效率的平衡艺术

本文深入解析AMEsim不连续处理机制在系统仿真中的应用,探讨如何平衡仿真精度与效率。通过液压系统仿真案例,详细介绍了事件检测算法、变步长求解器自适应策略及典型场景优化方法,帮助工程师有效应对仿真中的不连续性问题,提升仿真效率和准确性。

v4w5x6的博客 440

普通家庭炒土豆丝

炝炒土豆丝。

新广州人的网络安全 253

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8308

炒土豆丝

先上成品图 1. 炒土豆丝原料:土豆、油、醋、辣椒、盐、葱、姜、蒜 土豆切丝,放入水中泡10分钟 葱蒜切片、姜切丝,根据口味决定是否切辣椒末 油入锅烧七八成熟,加入上述调料,爆香后加入土豆丝翻炒 翻炒过程中,当锅中干燥时可以随时加水,避免粘锅 出锅前加入适量醋翻炒一下

yuanfang_way的博客 1702

数据中心光模块升级实录:从200G QSFP56到400G QSFP-DD的踩坑指南

本文记录了数据中心从200G QSFP56升级至400G QSFP-DD光模块的完整实战经验。文章深入剖析了升级过程中面临的兼容性、链路预算、布线、散热与功耗管理等核心挑战,并提供了具体的解决方案与排坑指南,为高速网络升级提供了宝贵的实践参考。

butter的博客 479

DexProtector内存态匿名段检测绕过与dex重组技术

Dex文件是Android应用的核心执行单元,其结构规范(如header_item、class_def_item、code_item)决定了运行时加载与解析的底层逻辑。DexProtector通过将dex数据拆解为多个无文件名、受保护的内存匿名段(如[anon:dp_header]、[anon:dp_code]),规避传统基于文件特征或标准加载路径的检测机制。该策略依赖Android mmap内存管理与ART虚拟机对dex结构的刚性要求,形成可被观测的布局规律。理解其内存态组织原理,结合权限/大小/命名/内

weixin_30855761的博客 688

AI写代码竟然在“作弊“?Weco AI揭开编程智能体的惊天秘密

AI写代码竟然在"作弊"?Weco AI揭开编程智能体的惊天秘密

weixin_49122920的博客 193

运算放大器测试方法-输入失调电压

由于运放输入回路的不对称性,在输入端将产生一定的误差信号,从而限制运放信号灵敏度。通常用输入失调电压(VOS)、输入失调电流(Ios)和输入偏置电流(IB)表示。运放有四个主要特征:输入失调特征、开环特征、共模特征及输出特征。其放大倍数较大,由于外界的影响,即使运放的输入端产生较小的输入信号,经过放大,在输出端也会产生较大的误差。为能精确测量其性能,一般采用辅助运放进行测试。下面着重讲了运放的主要参数及如何精确测量这些参数。文中DUT代表被测运放,A代表辅助运放。

weixin_46135931的博客 1万+

Go AI Agent 实战 26|Agent 的 Observe、Think、Act 与执行循环

本课通过Go手写实现Agent最小执行循环,明确Observe、Think、Act三环节职责:Observe提炼当前状态,Think基于规则决策下一步,Act执行真实动作并更新状态。使用模拟工具与确定性Planner,完整演示任务从查询文章、读取正文到生成总结的闭环流程,支持轮次追踪、预算控制及多种终止状态(成功、失败、取消、超限),验证了Agent核心逻辑的可运行性与健壮性。

2302_80713883的博客 194

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4549

sqoop抽取mysql的数据到hive表里面,字段内容被自动截取,导致字段不全的问题解决

今天央视重新转播NBA,写篇博客纪念一下这个重要的日子,湖人的表现就呵呵了!!!! 强行转到博客的主题来 mysql的字段属性:该字段能存下的值比如:“山东” `province` varchar(3) NOT NULL COMMENT '省份' 用sqoop sqoop import --connect "jdbc:mysql://xxxxxx:3306/xxxxxx?tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull..

放肆桀骜 963

LeetCode 1861. 旋转盒子|Go 双指针解法

j >= 0,如果写成j>0,会漏掉第 0 列,最左侧石头处理失败旋转矩阵行列互换:原 m 行 n 列 → 结果 n 行 m 列,make 数组长度不要写反旋转公式m-1-i:是原总行数 m,不是 n!很容易写成n-1-i区分:本题和轮转数组(189)分组循环不一样!189:所有元素固定移动 k 步,需要 gcd 分组1861:障碍物分割成多个独立段,石头向段末尾挤,用双指针更合适。

2503_92676540的博客 175

相机Camera日志分析之二:高通CamX架构对应Google原生Camera HAL3架构的标准API接口一级日志详细分析注释

【思维决定成长高度】当前讲述的是Camera领域log分析梯度分级讲解,讲究的是一种分析技巧,分析思维,一种感悟。技术路线的提升空间,需要更多开发技巧和开发学习能力去提升。技术大拿分析问题,可以从日志快速定位问题并解决问题,有充分的时间去学习更多知识,成长速度极快。同一起跑线,学习能力,开发效率等等都决定了程序员的成长提升空间。记得我毕业三年,同学之间的差距无限拉大,一些人还在几千块薪水,你已经是他的四五倍了,人与人的差距就是短短几年就拉开了。

429

Redis 从 0 到 1(二十七):JSON 体积是 Protobuf 的 3.7 倍?3 种序列化的 Go 基准测试

缓存对象直接用 json.Marshal,1 亿条 key 多花 20G 内存和 3 倍带宽。本文对 JSON / MessagePack / Protobuf 做 Go 基准测试(体积、编解码耗时、CPU),给出不同场景的选型表和统一序列化封装。

2501_92769340的博客 164

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

cpuprof.go开关、缓冲区与记账

本文详解Go语言CPU剖析的全链路机制,核心为定时信号触发栈采样、环形缓冲存储与异步写入。通过实验验证了64帧栈深度限制、1MiB缓冲区容量及样本丢失计数机制,揭示了SetCPUProfileRate控制采样频率、add函数处理信号中断、addExtra上报丢失样本等关键流程,并解析了跨平台差异与废弃特性。

不愿言弃-念何的博客 348

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms

联犀Go视频转码实战:在352×288测试流中单帧单核CPU耗时从16.5ms到5.46ms,区分SIMD、代码及编码策略的综合收益。保留测试条件、压测结果与适用边界。

QQ603785348的博客 330

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Go AI Agent 实战 30|Human-in-the-loop:关键操作前的人工确认

本课聚焦高风险操作的审批机制,强调仅靠Prompt无法保障安全,需在Go后端实现严格的HITL流程。通过定义waiting_approval状态、绑定具体操作与版本校验,确保审批可追溯、防并发漂移。示例展示任务状态管理、审批请求持久化及批准后重新验证逻辑,实现安全可靠的高风险操作执行。

2302_80713883的博客 248

运行go web服务,检测mysql服务和端口

如果你的窗口里显示的是别的报错文字(比如 ‘xxx’ 不是内部或外部命令、系统找不到指定的路径、或 Go 编译报错),把那几行原文发我,我再精确修——不过现在这版 bat 已经把最常见的三个坑(数据库、端口、闪退看不到错误)都堵上了。启动 MySQL:用干净的 my.ini 直接起 mysqld.exe(绕开 phpstudy 面板配置),验证连通:oa_admin_rule 554 行、oa_admin 2 行,数据完好。服务本身还能起来,但登录、菜单全依赖数据库,所以你看到的是红色警告 + 登录失效。

xinhuanjieyi的博客 157

cpuprof.go栈回溯、定时器与平台差异

sigprof() 信号处理器从寄存器状态出发,通过多路径回溯栈帧(含 CGO、vDSO、系统调用等),最多采集64帧,失败时归入 _System 等伪函数。采样结果双写至 pprof 和 trace,实现零成本共享。setcpuprofilerate() 通过关闭旧定时器、设置新频率并触发信号,确保采样精准可控,避免死锁与抢占干扰。

不愿言弃-念何的博客 40

成为全栈·Go 后端篇·Go 后端怎么测试:从成功响应到故障后置状态

Go 后端重写需要哪些测试证据?本文根据 M6 实际验证报告,梳理 68 个 operation 工作流、逐操作鉴权输入边界、数据库后置状态、事务失败注入、时间与并发、三种真实数据库、Node/Go 差分和四客户端请求层 smoke 的覆盖范围。文章列出实际请求/差分数字,同时明确替身、UI、线上和部署证据的限制。

FungLeo's Blog 220

2026-11-05-Go内存管理面试

内存分配器分层、三色标记、写屏障、STW、内存泄漏——Go 内存管理这块面试最容易问懵。这篇把分配器到 GC 到泄漏排查串成十连问,每题配答案框架和追问应对,文末给 GC 调优对照表。

利威尔的博客,主要分享一些go后端,agent相关知识,都是最新最前沿而且是免费的,在我的专栏里有各种方向的详细分类和内容整理,详细内容请阅读主页置顶文章,希望对你有帮助。 360

Go 工程化详解:项目结构、代码规范、测试体系与 CI/CD 实践

微服务;API 网关;云原生基础设施;命令行工具;区块链服务;实时数据处理系统;DevOps 平台;高并发网络服务。目录应该如何划分;业务代码应该放在哪里;包之间如何避免循环依赖;配置和密钥如何管理;错误如何统一处理;日志如何关联请求;如何安全地启动和关闭服务;如何编写单元测试和集成测试;如何管理数据库变更;如何保证每次构建结果一致;如何进行安全扫描和持续交付。这些问题已经不再是单纯的语法问题,而是 Go 工程化需要解决的问题。

十二的博客 372

Go语言第十八章(架构设计)

本文讲解 Go Modules 与项目结构,是 Go 多包项目、依赖管理的基础教程。从`go mod init`初始化模块、`go mod tidy`自动整理依赖入手,介绍模块路径、go.mod 与 go.sum 的作用;讲解自定义包导入规则、首字母大小写控制导出权限。同时介绍社区常用目录规范:cmd 存放程序入口、internal 为模块私有代码、pkg 用于对外可引用库。演示国内 GOPROXY 镜像配置,以 color 库为例说明第三方依赖引入流程。核心要点:一个 go.mod 对应一个模块,一个目录

qq1195566313的博客 212

go消息推送之极光推送 (JPush REST API + SDK,覆盖安卓与iOS)

使用 gorush有个绕不开的问题:国内安卓设备上 FCM 基本不可达,华为、小米、OPPO、vivo 各自为政——此时可用极光推送(JPush)作解决方案。它的思路和前面几家都不一样:App 集成极光 SDK 后拿到统一的 RegistrationID,服务端发一条 REST 请求,极光云端自动把消息路由到 APNs、各家厂商通道或极光自有长连接。这里给出了:一个用纯标准库直接调用极光的;另一个用社区维护的,类型化参数,接口注释与官方文档逐条对应。两个功能相同,可放在一起对比学习。

qq_40467670的博客 161

2026-11-04-Go批量导出实战

一个后台导出接口,订单量冲到 2 万后内存飙到 90%、P99 到 12 秒。复盘发现三个批量任务的经典坑:全量加载、全量拼字符串、串行写。这篇用分页游标+errgroup并发+信号量限流+写临时文件四招改完,P99 压到 900 毫秒,文末给批量任务自查清单表。

利威尔的博客,主要分享一些go后端,agent相关知识,都是最新最前沿而且是免费的,在我的专栏里有各种方向的详细分类和内容整理,详细内容请阅读主页置顶文章,希望对你有帮助。 368

Go 工业边缘错误处理实战:用 errors 构建可追溯错误链

哨兵错误适合表达跨层传递、稳定且数量有限的业务语义。var (switch {default:不要为每种底层故障都创建哨兵错误。语义不稳定、需要携带字段、只有局部模块使用的错误,更适合自定义类型。自定义错误适合表达“同一类失败,但上下文不同”的场景,例如设备读取失败、协议解析失败、采集任务失败。Op stringErr error使用errors.AsUnwrap返回Err,不要在Error()里丢失底层错误;字段使用稳定命名,便于结构化日志和指标统计;

ZenovaEdgeOS的博客 173
上一篇: linux c编程之“hello world”一
linuxwuj
博客等级 码龄16年 25粉丝 29原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值