当前位置: 首页 > 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.xdnf.cn/news/1317277.html

相关文章:

  • k8s集群搭建一主多从的jenkins集群
  • Win11 文件资源管理器预览窗格显示 XAML 文件内容教程
  • C++ vector的使用
  • 10 SQL进阶-SQL优化(8.15)
  • 说一下事件委托
  • Java 大视界 -- Java 大数据分布式计算在基因测序数据分析与精准医疗中的应用(400)
  • 【UEFI系列】ACPI
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • JavaScript 性能优化实战:从评估到落地的全链路指南
  • Spark03-RDD02-常用的Action算子
  • 在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
  • E2B是一个开源基础设施,允许您在云中安全隔离的沙盒中运行AI生成的代码和e2b.dev网站
  • Diamond基础2:开发流程之LedDemo
  • c_str()函数的详细解析
  • 简单的 VSCode 设置
  • (nice!!!)(LeetCode 每日一题) 837. 新 21 点 (动态规划、数学)
  • bash shell 入门
  • 云智智慧停充一体云-allnew全新体验-路内停车源码+路外停车源码+充电桩源码解决方案
  • Rust:DLL 输出对象的生命周期管理
  • API生命周期10阶段
  • 原子操作及基于原子操作的shared_ptr实现
  • Baumer高防护相机如何通过YoloV8深度学习模型实现工作设备状态的检测识别(C#代码UI界面版)
  • 【C++】Windows 下 TCP接口超详介绍,如何实现一个TCP服务端和客户端
  • Windows 10共享打印机操作指南
  • 业务员手机报价软件免费领取——仙盟创梦IDE
  • 精美UI的单页网盘资源分享搜索页面 短剧搜索 自适应页面
  • 飞算JavaAI赋能高吞吐服务器模拟:从0到百万级QPS的“流量洪峰”征服之旅
  • IC验证 AHB-RAM 项目(一)——项目理解
  • AOP配置类自动注入
  • Git安装使用