go从0到1项目实战体系一:go语言基础

复制代码
①. 所有go源码以.go结尾.
②. golang可执行程序,package main有且只有一个main入口函数.
③. 两种注释:单行注释//和多行注释/* */

1. 变量命名:

复制代码
①. 标识符以字母或下划线开头,大小写敏感
   以数字开头、含有特殊符号不行.
②. _是特殊标识符,用来忽略结果
③. 保留关键字

2. import方式:

复制代码
①. import("fmt")
②. import {
     "fmt"
   }

4. 常量:

复制代码
①. 常量使用const修饰,代表永远是只读的,不能修改.即在编译的时候就已经确定了.
②. const只能修饰boolean、number(int相关类型、浮点类型、complex)和string.
③. 语法:
   const identifier [type] = value        // 其中type可以省略
④. 举例:
   const b string = "hello world"
   const b = "hello world"       // 不写type在编译时,会自动推导类型
   const b = 9/3                 // 在编译时,会自动计算值
   const c = getValue()          // 错误的,因为函数只有在运行时,才会知道返回值
⑤. 比较优雅的写法:
   const (
     a = 0
     b = 1
     c = 2
   )
⑥. 更加专业的写法:
   const (
     a = iota     // 这个会下面会自动+1
     b            // 值为1
     c            // 值为2
   )

5. 变量:

复制代码
①. 语法:
   var identifier type
②. 举例:
   var a int
   var d int = 8
   Var (
     a int                 // 默认为0
     b string              // 默认为""
     c bool                // 默认为false
     d int = 8
     e = "hello world"     // 可以不写type类型
   )

5.1 值类型和引用类型:

复制代码
①. 值类型:
   a. 变量直接存储值,内存通常在栈中分配.
   b. 基本数据类型:
      int、float、bool、string以及数组和struct
   c. var i = 5        // i ---> 内存中的值

②. 引用类型:
   a. 变量存储的是一个地址,这个地址存储最终的值.
   b. 内存通常在堆上分配,通过GC回收.
   c. 传指针效率高,如果传一个很大的结构体,效率就不高了.
   d. 引用类型:
      指针、slice(切片)、map、chan等都是引用类型.
   e. var i = 5       // ref i ---> 地址(指针) --->  内存中的值
   f. &、*的运用:
      add(&a)
      func add(int *a) {
         return *a + 1       // *a表示取这个内存地址对应的值,只是a表示内存地址
      }

③. 总结:
   a. 在函数体中,如果修改传过来的值类型,外面的值不会变化.因为是复制了一份值进去.如果是修改引用类型,因为指针指向同一个变量,所以会影响外面的值.

(1). 举例:

go 复制代码
func main() {
	fmt.Println(calc.Age)
	a := 10
	b := 20
	swap(&a, &b);
	fmt.Println(a);                  // 10
	fmt.Println(b);                  // 20
}
func swap(a *int, b *int) {         // 这里是交换拷贝值的内存地址,不影响外面
	temp := a
	a = b
	b = temp
	fmt.Println("swap a:", *a);      // 20
	fmt.Println("swap b:", *b);      // 10
}

注:
①. 不管值类型是传递值还是内存地址,都是重新拷贝一份.

5.2 变量的作用域:

复制代码
①. 局部变量:
   a. 在函数内部声明的变量.
   b. 生命周期仅限于函数内部,出了这个函数,变量就销毁了.
②. 全局变量:
   a. 在函数外部声明的变量.
   b. 生命周期作用于整个包,如果是大写的,则作用于整个程序.
   c. 在语义块{}中,也有作用域.如for循环中声明的变量,不能在for外面使用.
相关推荐
AKAMAI19 分钟前
2026年Gartner Peer Insights 边缘分布平台客户之声将Akamai评为客户之选
人工智能·云计算
Csvn20 分钟前
📊 SQL 入门 Day 18:索引原理
后端·sql
Csvn24 分钟前
🐍 Day3 : Python 容器精讲 — list、dict、set、tuple 底层实现与高级操作
后端·python
用户9385156350727 分钟前
ESLint 代码规范完全指南——从 AST 原理到 flat config 逐行解析
javascript·后端·代码规范
用户9385156350729 分钟前
深入理解 Next.js:从 SPA 的 SEO 问题到约定式路由与 SSR 原理
前端·后端·全栈
weixin-a153003083161 小时前
python-装饰器
开发语言·python
灯澜忆梦1 小时前
【MySQL12】进阶篇 | SQL优化
数据库·sql·mysql·性能优化
我的xiaodoujiao1 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
叠层归一研究院1 小时前
AGI 系统(五):多主体 AGI 网络 — 分布式符号边界上的时序差同构传播
分布式·php·agi
码事漫谈3 小时前
Deepseek涨价了,前后对比,竟然差这么多
后端