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外面使用.
相关推荐
We་ct几秒前
LeetCode 50. Pow(x, n):从暴力法到快速幂的优化之路
开发语言·前端·javascript·算法·leetcode·typescript·
http阿拉丁神猫2 分钟前
kubernetes知识点汇总43-47
云原生·容器·kubernetes
阿里嘎多学长3 分钟前
2026-04-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
EnCi Zheng4 分钟前
P2G-Python字符串方法完全指南-split、join、strip、replace的Python编程利器
开发语言·python
爱学习的小囧6 分钟前
VCF 9 实验室网络部署全攻略:从硬件连接到配置实操
开发语言·网络·php
liliangcsdn17 分钟前
LLM如何与mcp server交互示例
linux·开发语言·python
军军君0123 分钟前
Three.js基础功能学习十五:智能黑板实现实例二
开发语言·前端·javascript·vue.js·3d·threejs·三维
维齐洛波奇特利(male)27 分钟前
@Pointcut(“execution(* com.hdzx..*(..))“)切入点与aop 导致无限循环
java·开发语言
神奇小汤圆29 分钟前
Spring-Boot-泛型封装-这8个坑让我调了3天
后端
深挖派30 分钟前
GoLand 2026.1 安装配置与环境搭建 (保姆级图文教程)
后端·golang·编辑器·go·goland