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外面使用.
相关推荐
GetcharZp7 分钟前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端
社交怪人9 分钟前
【算平均分】信息学奥赛一本通C语言解法(题号2071)
c语言·开发语言
郭涤生1 小时前
不同主机之间网络通信-以太网连接复习
开发语言·rk3588
山居秋暝LS1 小时前
【无标题】RTX00安装paddle OCR,win11不能装最新的,也不能用GPU
开发语言·r语言
卢锡荣1 小时前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
Xin_ye100861 小时前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
AI科技星2 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
审判长烧鸡2 小时前
【Go工具】go-playground是什么组织?官方的?
开发语言·安全·go
zhangxingchao2 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
IT_陈寒2 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端