当前位置: 首页 > news >正文

go基础学习笔记

思维导图

在这里插入图片描述

变量

声明形式为var 变量名 变量类型
赋值形式为变量名=变量值
声明和赋值同时形式为变量名:=变量值
多个变量同时声明使用形式为

var (x intb bool
)

当有多个变量类型一样时,可以放在一行,形式为var x,y int,当类型一样,并且需要赋值同一行形式为a, b :=10, 20
特殊变量名_(下划线),当赋值给下划线时,会被丢弃_, b:=10,20

类型

int在32位硬件上是32位的,在64位硬件上是64位的
数字类型的有

  • int8, int16,int32,int64, rune(int32的别名)
  • byte, uint8, uint16, uint32, uint64
  • float32, float64

字符串在go中是不可修改的,如果需要修改,需要如下操作

var s string = "hello"
c := []rune(s)
c[0] = 'c'
s2 := string(c)

多行字符串支持形式有

  • 使用+换行,这个不包含换行符
  • 使用反引用``,包含换行符
s := "Starting part" +"Ending part"
s1 := `Starting partEnding part`

复数类型有complex126, complex64
错误类型为error

常量

其支持的类型有数字、布尔和字符串。多个常量同时声明使用形式与变量类似。在使用枚举时,可以使用iota,首次使用表示0,再次使用则+1,如

const (a = iotab
)

运算符

算术运算符有:*,/, %,<<, >>
位运算符有:&,&^, |, ^
关系运算符有:==, !=, <,<=, >, >=
逻辑运算符有:&&, ||, !
通道运算符:<-

控制结构

支持条件和循环
条件形式为if或者switch

if 条件 {} else {}
或者
switch {
case 条件
}

在switch不带表达式时,即为true,执行内部的case条件语句
在带有表达式时,会判断条件的真假,进入对应的case分支,匹配失败时不会向c语言样自动向下尝试,如果想要像c语言那样,则添加fallthrough
循环形式有

for init; condition; post {}
或者
for condition {}
或者
for {}

range可以用于循环,尤其是在数据类型为slice, array, string, map和channel

list := []string{"a", "b", "c", "d", "e", "f"}
for k, v := range list {fmt.Println(k, v)
}

array,slice和map

数组声明形式为var a [n]type,其中n表示数组元素个数,type表示数组元素类型。在联合声明时a:=[...]int{},n可以使用省略号,由go自动计算数组元素个数。数组是值类型
slice是引用类型,为指向array的指针

函数

形式为

func (p myType) funcname(q int)(r, s int) {
}

当没有返回值时,(r,s int)可以省略
当返回值只有一个时,可以只写类型
defer语句在函数退出时执行,比如资源回收
变参函数形式为

func funcname(arg ...int)

在函数体内,变参类型为slice,对于没有指定类型的变参,类型默认为interface

包中大写字母开头的是public的,小写字母开头的是private的
推荐使用go module来管理包

测试包

测试包为testing。在使用go test时,会遍历以_test.go结尾的go文件,同时执行以Test开头的测试函数

http://www.dtcms.com/a/335389.html

相关文章:

  • RAG 分块中表格填补简明示例:Markdown、HTML、Excel、Doc
  • C++核心语言元素与构建块全解析:从语法规范到高效设计
  • 编译器生成的合成访问方法(Synthetic Accessor Method)
  • TensorRT-LLM.V1.1.0rc0:在无 GitHub 访问权限的服务器上编译 TensorRT-LLM 的完整实践
  • Linux容器基石:LXC核心概念与实践指南
  • Flink Stream API核心概念继承体系
  • 代码随想录算法训练营四十四天|图论part02
  • 像海绵一样吸收技术书籍的高效学习方法
  • [Go]包管理发展之路(Go Modules VS GOPATH)
  • 【Jenkins】02 - 自动化部署配置
  • 简单的 VSCode 设置
  • 利用vscode时进行调试,即使设置justMyCode为False仍然失败,如何解决?
  • 嵌入式练习项目——————抓包获取天气信息
  • 【Linux | 网络】高级IO
  • SQL性能优化全攻略
  • 基于libcurl与epoll的高性能异步FTP客户端
  • 数据准备|生成折线图
  • 如何让AI视频模型(如Veo)开口说中文?一个顶级提示词的深度拆解
  • Spring Boot 项目配置 MySQL SSL 加密访问
  • 【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
  • 计算机网络 HTTP和HTTPS 区别
  • Rust 条件语句
  • deepseek一键生成word和excel并一键下载
  • 初识CSS
  • [python学习记录1]python简介
  • SHAP分析!NRBO-Transformer-BiLSTM回归预测SHAP分析,深度学习可解释分析!
  • KingbaseES:一体化架构与多层防护,支撑业务的持续稳定运行与扩展
  • 智能制造——解读车企数字化转型构建高效经营管理数据治理体系【附全文阅读】
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day6
  • 【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数),视频保存在指定位置