From 4228f447f7f6265536efc4dce2442b3c2972013a Mon Sep 17 00:00:00 2001 From: Deastern <916291030@qq.com> Date: Tue, 8 Apr 2025 17:01:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01_basics/01_variables/go.mod | 3 + 01_basics/01_variables/main.go | 16 ++++++ 01_basics/02_data_types/go.mod | 3 + 01_basics/02_data_types/main.go | 22 ++++++++ 01_basics/03_operators/go.mod | 3 + 01_basics/03_operators/main.go | 29 ++++++++++ .../04_control_flow/01_conditionals/go.mod | 3 + .../04_control_flow/01_conditionals/main.go | 25 +++++++++ 01_basics/04_control_flow/02_loops/go.mod | 3 + 01_basics/04_control_flow/02_loops/main.go | 40 +++++++++++++ 01_basics/05_functions/01_definition/go.mod | 3 + 01_basics/05_functions/01_definition/main.go | 31 ++++++++++ .../05_functions/02_multiple_returns/go.mod | 3 + .../05_functions/02_multiple_returns/main.go | 39 +++++++++++++ 01_basics/05_functions/03_anonymous/go.mod | 3 + 01_basics/05_functions/03_anonymous/main.go | 34 +++++++++++ 01_basics/06_packages/go.mod | 3 + 01_basics/06_packages/main.go | 13 +++++ 01_basics/06_packages/myutils/utils.go | 13 +++++ 02_core_concepts/01_pointers/main.go | 21 +++++++ 02_core_concepts/02_structs/go.mod | 3 + 02_core_concepts/02_structs/main.go | 5 ++ 02_core_concepts/03_interfaces/go.mod | 3 + 02_core_concepts/03_interfaces/main.go | 5 ++ 02_core_concepts/04_error_handling/go.mod | 3 + 02_core_concepts/04_error_handling/main.go | 5 ++ .../05_concurrency/01_goroutines/go.mod | 3 + .../05_concurrency/01_goroutines/main.go | 5 ++ .../05_concurrency/02_channels/go.mod | 3 + .../05_concurrency/02_channels/main.go | 5 ++ .../05_concurrency/03_sync_pkg/go.mod | 3 + .../05_concurrency/03_sync_pkg/main.go | 5 ++ 03_std_lib/01_fmt/go.mod | 3 + 03_std_lib/01_fmt/main.go | Bin 0 -> 80 bytes 03_std_lib/02_os/go.mod | 3 + 03_std_lib/02_os/main.go | 5 ++ 03_std_lib/03_io/go.mod | 3 + 03_std_lib/03_io/main.go | 5 ++ 03_std_lib/04_net_http/go.mod | 3 + 03_std_lib/04_net_http/main.go | 5 ++ 03_std_lib/05_encoding_json/go.mod | 3 + 03_std_lib/05_encoding_json/main.go | 5 ++ 03_std_lib/06_testing/go.mod | 3 + 03_std_lib/06_testing/main.go | 5 ++ 04_tools/01_go_mod/go.mod | 3 + 04_tools/01_go_mod/main.go | 5 ++ 04_tools/02_go_test/go.mod | 3 + 04_tools/02_go_test/main.go | 5 ++ 04_tools/03_go_vet/go.mod | 3 + 04_tools/03_go_vet/main.go | 5 ++ 04_tools/04_go_fmt/go.mod | 3 + 04_tools/04_go_fmt/main.go | 5 ++ 04_tools/05_debug_tools/go.mod | 3 + 04_tools/05_debug_tools/main.go | 5 ++ 05_advanced/01_reflection/go.mod | 3 + 05_advanced/01_reflection/main.go | 5 ++ 05_advanced/02_performance/go.mod | 3 + 05_advanced/02_performance/main.go | 5 ++ 05_advanced/03_memory_management/go.mod | 3 + 05_advanced/03_memory_management/main.go | 5 ++ 05_advanced/04_network_programming/go.mod | 3 + 05_advanced/04_network_programming/main.go | 5 ++ 05_advanced/05_database/go.mod | 3 + 05_advanced/05_database/main.go | 5 ++ 06_projects/01_cli_tool/go.mod | 3 + 06_projects/01_cli_tool/main.go | 5 ++ 06_projects/02_web_service/go.mod | 3 + 06_projects/02_web_service/main.go | 5 ++ 06_projects/03_crawler/go.mod | 3 + 06_projects/03_crawler/main.go | 5 ++ 06_projects/04_microservice/go.mod | 3 + 06_projects/04_microservice/main.go | 5 ++ 06_projects/05_distributed_system/go.mod | 3 + 06_projects/05_distributed_system/main.go | 5 ++ go_learning_roadmap.md | 53 ++++++++++++++++++ 75 files changed, 574 insertions(+) create mode 100644 01_basics/01_variables/go.mod create mode 100644 01_basics/01_variables/main.go create mode 100644 01_basics/02_data_types/go.mod create mode 100644 01_basics/02_data_types/main.go create mode 100644 01_basics/03_operators/go.mod create mode 100644 01_basics/03_operators/main.go create mode 100644 01_basics/04_control_flow/01_conditionals/go.mod create mode 100644 01_basics/04_control_flow/01_conditionals/main.go create mode 100644 01_basics/04_control_flow/02_loops/go.mod create mode 100644 01_basics/04_control_flow/02_loops/main.go create mode 100644 01_basics/05_functions/01_definition/go.mod create mode 100644 01_basics/05_functions/01_definition/main.go create mode 100644 01_basics/05_functions/02_multiple_returns/go.mod create mode 100644 01_basics/05_functions/02_multiple_returns/main.go create mode 100644 01_basics/05_functions/03_anonymous/go.mod create mode 100644 01_basics/05_functions/03_anonymous/main.go create mode 100644 01_basics/06_packages/go.mod create mode 100644 01_basics/06_packages/main.go create mode 100644 01_basics/06_packages/myutils/utils.go create mode 100644 02_core_concepts/01_pointers/main.go create mode 100644 02_core_concepts/02_structs/go.mod create mode 100644 02_core_concepts/02_structs/main.go create mode 100644 02_core_concepts/03_interfaces/go.mod create mode 100644 02_core_concepts/03_interfaces/main.go create mode 100644 02_core_concepts/04_error_handling/go.mod create mode 100644 02_core_concepts/04_error_handling/main.go create mode 100644 02_core_concepts/05_concurrency/01_goroutines/go.mod create mode 100644 02_core_concepts/05_concurrency/01_goroutines/main.go create mode 100644 02_core_concepts/05_concurrency/02_channels/go.mod create mode 100644 02_core_concepts/05_concurrency/02_channels/main.go create mode 100644 02_core_concepts/05_concurrency/03_sync_pkg/go.mod create mode 100644 02_core_concepts/05_concurrency/03_sync_pkg/main.go create mode 100644 03_std_lib/01_fmt/go.mod create mode 100644 03_std_lib/01_fmt/main.go create mode 100644 03_std_lib/02_os/go.mod create mode 100644 03_std_lib/02_os/main.go create mode 100644 03_std_lib/03_io/go.mod create mode 100644 03_std_lib/03_io/main.go create mode 100644 03_std_lib/04_net_http/go.mod create mode 100644 03_std_lib/04_net_http/main.go create mode 100644 03_std_lib/05_encoding_json/go.mod create mode 100644 03_std_lib/05_encoding_json/main.go create mode 100644 03_std_lib/06_testing/go.mod create mode 100644 03_std_lib/06_testing/main.go create mode 100644 04_tools/01_go_mod/go.mod create mode 100644 04_tools/01_go_mod/main.go create mode 100644 04_tools/02_go_test/go.mod create mode 100644 04_tools/02_go_test/main.go create mode 100644 04_tools/03_go_vet/go.mod create mode 100644 04_tools/03_go_vet/main.go create mode 100644 04_tools/04_go_fmt/go.mod create mode 100644 04_tools/04_go_fmt/main.go create mode 100644 04_tools/05_debug_tools/go.mod create mode 100644 04_tools/05_debug_tools/main.go create mode 100644 05_advanced/01_reflection/go.mod create mode 100644 05_advanced/01_reflection/main.go create mode 100644 05_advanced/02_performance/go.mod create mode 100644 05_advanced/02_performance/main.go create mode 100644 05_advanced/03_memory_management/go.mod create mode 100644 05_advanced/03_memory_management/main.go create mode 100644 05_advanced/04_network_programming/go.mod create mode 100644 05_advanced/04_network_programming/main.go create mode 100644 05_advanced/05_database/go.mod create mode 100644 05_advanced/05_database/main.go create mode 100644 06_projects/01_cli_tool/go.mod create mode 100644 06_projects/01_cli_tool/main.go create mode 100644 06_projects/02_web_service/go.mod create mode 100644 06_projects/02_web_service/main.go create mode 100644 06_projects/03_crawler/go.mod create mode 100644 06_projects/03_crawler/main.go create mode 100644 06_projects/04_microservice/go.mod create mode 100644 06_projects/04_microservice/main.go create mode 100644 06_projects/05_distributed_system/go.mod create mode 100644 06_projects/05_distributed_system/main.go create mode 100644 go_learning_roadmap.md diff --git a/01_basics/01_variables/go.mod b/01_basics/01_variables/go.mod new file mode 100644 index 0000000..e640493 --- /dev/null +++ b/01_basics/01_variables/go.mod @@ -0,0 +1,3 @@ +module variables + +go 1.23.5 diff --git a/01_basics/01_variables/main.go b/01_basics/01_variables/main.go new file mode 100644 index 0000000..cac7059 --- /dev/null +++ b/01_basics/01_variables/main.go @@ -0,0 +1,16 @@ +package main + +import "fmt" + +func main() { + // 变量声明与初始化 + var name string = "Go语言" + age := 28 // 类型推断 + + // 多变量声明 + var width, height = 100, 50 + + fmt.Println("变量示例:") + fmt.Printf("name: %s, age: %d\n", name, age) + fmt.Printf("width: %d, height: %d\n", width, height) +} diff --git a/01_basics/02_data_types/go.mod b/01_basics/02_data_types/go.mod new file mode 100644 index 0000000..a7eda0b --- /dev/null +++ b/01_basics/02_data_types/go.mod @@ -0,0 +1,3 @@ +module data_types + +go 1.23.5 diff --git a/01_basics/02_data_types/main.go b/01_basics/02_data_types/main.go new file mode 100644 index 0000000..5042a74 --- /dev/null +++ b/01_basics/02_data_types/main.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func main() { + // 基本数据类型示例 + var ( + integer int = 42 + float float64 = 3.14 + boolean bool = true + str string = "Hello" + ) + + // 复合类型 + var array [3]int = [3]int{1, 2, 3} + slice := []string{"a", "b", "c"} + + fmt.Println("数据类型示例:") + fmt.Printf("integer: %d, float: %f, boolean: %t, string: %s\n", + integer, float, boolean, str) + fmt.Printf("array: %v, slice: %v\n", array, slice) +} diff --git a/01_basics/03_operators/go.mod b/01_basics/03_operators/go.mod new file mode 100644 index 0000000..1feed77 --- /dev/null +++ b/01_basics/03_operators/go.mod @@ -0,0 +1,3 @@ +module operators + +go 1.23.5 diff --git a/01_basics/03_operators/main.go b/01_basics/03_operators/main.go new file mode 100644 index 0000000..d05ba20 --- /dev/null +++ b/01_basics/03_operators/main.go @@ -0,0 +1,29 @@ +package main + +import "fmt" + +func main() { + a, b := 15, 10 + + // 算术运算符 + sum := a + b + diff := a - b + product := a * b + quotient := a / b + remainder := a % b + + // 比较运算符 + eq := a == b + gt := a > b + lt := a < b + + fmt.Println("运算符示例:") + fmt.Printf("%d + %d = %d\n", a, b, sum) + fmt.Printf("%d - %d = %d\n", a, b, diff) + fmt.Printf("%d * %d = %d\n", a, b, product) + fmt.Printf("%d / %d = %d\n", a, b, quotient) + fmt.Printf("%d %% %d = %d\n", a, b, remainder) + fmt.Printf("%d == %d: %t\n", a, b, eq) + fmt.Printf("%d > %d: %t\n", a, b, gt) + fmt.Printf("%d < %d: %t\n", a, b, lt) +} diff --git a/01_basics/04_control_flow/01_conditionals/go.mod b/01_basics/04_control_flow/01_conditionals/go.mod new file mode 100644 index 0000000..63309af --- /dev/null +++ b/01_basics/04_control_flow/01_conditionals/go.mod @@ -0,0 +1,3 @@ +module conditionals + +go 1.23.5 diff --git a/01_basics/04_control_flow/01_conditionals/main.go b/01_basics/04_control_flow/01_conditionals/main.go new file mode 100644 index 0000000..950bb22 --- /dev/null +++ b/01_basics/04_control_flow/01_conditionals/main.go @@ -0,0 +1,25 @@ +package main + +import "fmt" + +func main() { + score := 85 + + // if-else条件语句 + if score >= 90 { + fmt.Println("优秀") + } else if score >= 80 { + fmt.Println("良好") + } else if score >= 60 { + fmt.Println("及格") + } else { + fmt.Println("不及格") + } + + // 带初始化的if语句 + if num := 9; num%2 == 0 { + fmt.Printf("%d是偶数\n", num) + } else { + fmt.Printf("%d是奇数\n", num) + } +} diff --git a/01_basics/04_control_flow/02_loops/go.mod b/01_basics/04_control_flow/02_loops/go.mod new file mode 100644 index 0000000..138f2ee --- /dev/null +++ b/01_basics/04_control_flow/02_loops/go.mod @@ -0,0 +1,3 @@ +module loops + +go 1.23.5 diff --git a/01_basics/04_control_flow/02_loops/main.go b/01_basics/04_control_flow/02_loops/main.go new file mode 100644 index 0000000..8dd4b60 --- /dev/null +++ b/01_basics/04_control_flow/02_loops/main.go @@ -0,0 +1,40 @@ +package main + +import "fmt" + +func main() { + // 基本for循环 + fmt.Println("基本for循环:") + for i := 0; i < 5; i++ { + fmt.Printf("%d ", i) + } + fmt.Println() + + // while风格的for循环 + fmt.Println("\nwhile风格循环:") + n := 0 + for n < 3 { + fmt.Printf("%d ", n) + n++ + } + fmt.Println() + + // 无限循环 + fmt.Println("\n无限循环(按条件break):") + count := 0 + for { + if count > 3 { + break + } + fmt.Printf("%d ", count) + count++ + } + fmt.Println() + + // range循环 + fmt.Println("\nrange循环:") + nums := []int{10, 20, 30} + for i, num := range nums { + fmt.Printf("索引:%d 值:%d\n", i, num) + } +} diff --git a/01_basics/05_functions/01_definition/go.mod b/01_basics/05_functions/01_definition/go.mod new file mode 100644 index 0000000..23d0500 --- /dev/null +++ b/01_basics/05_functions/01_definition/go.mod @@ -0,0 +1,3 @@ +module definition + +go 1.23.5 diff --git a/01_basics/05_functions/01_definition/main.go b/01_basics/05_functions/01_definition/main.go new file mode 100644 index 0000000..814b25a --- /dev/null +++ b/01_basics/05_functions/01_definition/main.go @@ -0,0 +1,31 @@ +package main + +import "fmt" + +// 基本函数定义 +func greet(name string) { + fmt.Printf("Hello, %s!\n", name) +} + +// 带返回值的函数 +func add(a, b int) int { + return a + b +} + +// 多返回值函数 +func swap(x, y string) (string, string) { + return y, x +} + +func main() { + // 调用无返回值函数 + greet("Gopher") + + // 调用单返回值函数 + sum := add(3, 5) + fmt.Println("3 + 5 =", sum) + + // 调用多返回值函数 + a, b := swap("hello", "world") + fmt.Println(a, b) +} diff --git a/01_basics/05_functions/02_multiple_returns/go.mod b/01_basics/05_functions/02_multiple_returns/go.mod new file mode 100644 index 0000000..12e9712 --- /dev/null +++ b/01_basics/05_functions/02_multiple_returns/go.mod @@ -0,0 +1,3 @@ +module multiple_returns + +go 1.23.5 diff --git a/01_basics/05_functions/02_multiple_returns/main.go b/01_basics/05_functions/02_multiple_returns/main.go new file mode 100644 index 0000000..7c29946 --- /dev/null +++ b/01_basics/05_functions/02_multiple_returns/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "math" +) + +// 返回计算结果和错误信息 +func sqrt(x float64) (float64, error) { + if x < 0 { + return 0, fmt.Errorf("不能对负数 %f 开平方", x) + } + return math.Sqrt(x), nil +} + +// 命名返回值 +func split(sum int) (x, y int) { + x = sum * 4 / 9 + y = sum - x + return // 裸返回 +} + +func main() { + // 处理多返回值 + if result, err := sqrt(16); err != nil { + fmt.Println("错误:", err) + } else { + fmt.Println("平方根:", result) + } + + // 处理错误情况 + if _, err := sqrt(-4); err != nil { + fmt.Println("错误:", err) + } + + // 使用命名返回值 + a, b := split(17) + fmt.Printf("split(17) = %d, %d\n", a, b) +} diff --git a/01_basics/05_functions/03_anonymous/go.mod b/01_basics/05_functions/03_anonymous/go.mod new file mode 100644 index 0000000..d2e5fb5 --- /dev/null +++ b/01_basics/05_functions/03_anonymous/go.mod @@ -0,0 +1,3 @@ +module anonymous + +go 1.23.5 diff --git a/01_basics/05_functions/03_anonymous/main.go b/01_basics/05_functions/03_anonymous/main.go new file mode 100644 index 0000000..e4bae68 --- /dev/null +++ b/01_basics/05_functions/03_anonymous/main.go @@ -0,0 +1,34 @@ +package main + +import "fmt" + +func main() { + // 立即执行的匿名函数 + func(msg string) { + fmt.Println(msg) + }("立即执行的匿名函数") + + // 将匿名函数赋值给变量 + greet := func(name string) { + fmt.Printf("Hello, %s!\n", name) + } + greet("Gopher") + + // 闭包示例 + adder := func() func(int) int { + sum := 0 + return func(x int) int { + sum += x + return sum + } + } + + // 使用闭包 + pos, neg := adder(), adder() + for i := 0; i < 5; i++ { + fmt.Println( + "pos:", pos(i), + "neg:", neg(-2*i), + ) + } +} diff --git a/01_basics/06_packages/go.mod b/01_basics/06_packages/go.mod new file mode 100644 index 0000000..d4b6ce6 --- /dev/null +++ b/01_basics/06_packages/go.mod @@ -0,0 +1,3 @@ +module packages + +go 1.21 diff --git a/01_basics/06_packages/main.go b/01_basics/06_packages/main.go new file mode 100644 index 0000000..99b8256 --- /dev/null +++ b/01_basics/06_packages/main.go @@ -0,0 +1,13 @@ +package main + +import ( + "fmt" + "packages/myutils" // 导入自定义包 +) + +func main() { + // 调用外部包中的函数 + myutils.Greet("Gopher") + + fmt.Println("包导入和使用示例") +} diff --git a/01_basics/06_packages/myutils/utils.go b/01_basics/06_packages/myutils/utils.go new file mode 100644 index 0000000..f01dbc9 --- /dev/null +++ b/01_basics/06_packages/myutils/utils.go @@ -0,0 +1,13 @@ +package myutils + +import "fmt" + +// 首字母大写的函数才能被外部包访问 +func Greet(name string) { + fmt.Printf("Hello, %s!\n", name) +} + +// 小写函数只能在包内使用 +func internalFunc() { + fmt.Println("This is internal") +} diff --git a/02_core_concepts/01_pointers/main.go b/02_core_concepts/01_pointers/main.go new file mode 100644 index 0000000..d6ea877 --- /dev/null +++ b/02_core_concepts/01_pointers/main.go @@ -0,0 +1,21 @@ +package main + +import "fmt" + +func main() { + // 基本指针操作 + a := 42 + p := &a // 获取a的地址 + + fmt.Printf("a的值: %d, 地址: %p\n", a, p) + fmt.Printf("通过指针访问值: %d\n", *p) + + // 通过指针修改值 + *p = 100 + fmt.Printf("修改后a的值: %d\n", a) + + // 指针的指针 + pp := &p + fmt.Printf("指针的指针: %p\n", pp) + fmt.Printf("通过指针的指针访问值: %d\n", **pp) +} diff --git a/02_core_concepts/02_structs/go.mod b/02_core_concepts/02_structs/go.mod new file mode 100644 index 0000000..84b0f5f --- /dev/null +++ b/02_core_concepts/02_structs/go.mod @@ -0,0 +1,3 @@ +module structs + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/02_structs/main.go b/02_core_concepts/02_structs/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/02_structs/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/02_core_concepts/03_interfaces/go.mod b/02_core_concepts/03_interfaces/go.mod new file mode 100644 index 0000000..b18970b --- /dev/null +++ b/02_core_concepts/03_interfaces/go.mod @@ -0,0 +1,3 @@ +module interfaces + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/03_interfaces/main.go b/02_core_concepts/03_interfaces/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/03_interfaces/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/02_core_concepts/04_error_handling/go.mod b/02_core_concepts/04_error_handling/go.mod new file mode 100644 index 0000000..4d3a30c --- /dev/null +++ b/02_core_concepts/04_error_handling/go.mod @@ -0,0 +1,3 @@ +module error_handling + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/04_error_handling/main.go b/02_core_concepts/04_error_handling/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/04_error_handling/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/02_core_concepts/05_concurrency/01_goroutines/go.mod b/02_core_concepts/05_concurrency/01_goroutines/go.mod new file mode 100644 index 0000000..9a78d35 --- /dev/null +++ b/02_core_concepts/05_concurrency/01_goroutines/go.mod @@ -0,0 +1,3 @@ +module goroutines + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/05_concurrency/01_goroutines/main.go b/02_core_concepts/05_concurrency/01_goroutines/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/05_concurrency/01_goroutines/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/02_core_concepts/05_concurrency/02_channels/go.mod b/02_core_concepts/05_concurrency/02_channels/go.mod new file mode 100644 index 0000000..ccaf40b --- /dev/null +++ b/02_core_concepts/05_concurrency/02_channels/go.mod @@ -0,0 +1,3 @@ +module channels + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/05_concurrency/02_channels/main.go b/02_core_concepts/05_concurrency/02_channels/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/05_concurrency/02_channels/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/02_core_concepts/05_concurrency/03_sync_pkg/go.mod b/02_core_concepts/05_concurrency/03_sync_pkg/go.mod new file mode 100644 index 0000000..02957c1 --- /dev/null +++ b/02_core_concepts/05_concurrency/03_sync_pkg/go.mod @@ -0,0 +1,3 @@ +module sync_pkg + +go 1.21 \ No newline at end of file diff --git a/02_core_concepts/05_concurrency/03_sync_pkg/main.go b/02_core_concepts/05_concurrency/03_sync_pkg/main.go new file mode 100644 index 0000000..0db886e --- /dev/null +++ b/02_core_concepts/05_concurrency/03_sync_pkg/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + // TODO +} diff --git a/03_std_lib/01_fmt/go.mod b/03_std_lib/01_fmt/go.mod new file mode 100644 index 0000000..5698c4f --- /dev/null +++ b/03_std_lib/01_fmt/go.mod @@ -0,0 +1,3 @@ +module fmt + +go 1.23.5 diff --git a/03_std_lib/01_fmt/main.go b/03_std_lib/01_fmt/main.go new file mode 100644 index 0000000000000000000000000000000000000000..53de6bfe8b0520a5ae1c32a707e838ee5f567da6 GIT binary patch literal 80 zcmezWuYe(uA(