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

七日 Go 的自学笔记 (一)

文章目录

  • 前言
  • GPT 给我安排的七日学习计划
  • 起步
  • go 语法
    • 导出
    • 函数
      • 带名字的返回值
    • 变量
      • 第一次见
      • 赋值
      • 短变量声明
      • 基本类型
      • 零值
      • 类型转换,类型推断
      • 常量
    • 对fmt.print 的几个疑问
      • 数值常量
      • 数学:左移运算符的理解
    • for 循环
    • if else
      • switch 的用法
      • if / esle if / else 的更好的替代
    • defer 栈
    • 指针、结构体、切片
      • 二维数组
      • 切片的追加
      • range 遍历


前言

学无止境啊,太深了


GPT 给我安排的七日学习计划

在这里插入图片描述

起步

安装什么的就不赘述了,去官网上照着做就好了

go 语法

直接开刷这个网址,这里面是一步一步学习的 https://tour.go-zh.org/welcome/1

在这里插入图片描述
这话的意思可能是:你导入了 "math/rand" 之后,可以用 rand 来调用里面的方法吧?

在这里插入图片描述

下面会记录一些我觉得比较重点的问题,或者是我想记录的东西

导出

在这里插入图片描述

函数

这种写法很像 ts

在这里插入图片描述

带名字的返回值

在这里插入图片描述
可以这样写,这样写,可读性会更好一些

不过有引出了新的问题: := 是啥?

package mainimport "fmt"func split(sum int) (int, int) {x := sum * 4 / 9y := sum - xreturn x, y
}func main() {fmt.Println(split((17)))
}

变量

第一次见

在这里插入图片描述

赋值

可以连着赋值
在这里插入图片描述

短变量声明

好的,刚才的疑惑来解答了

在函数中,短赋值语句 := 可在隐式确定类型的 var 声明中使用。

函数外的每个语句都 必须 以关键字开始(var、func 等),因此 := 结构不能在函数外使用。

在这里插入图片描述

基本类型

md 开始上强度了,开始看不懂了

在这里插入图片描述

在这里插入图片描述
哦哦大概能猜出来一些,%T 是这个变量的类型, %v 是这个变量的值,然后
有点数学意味的东西是位运算:
在这里插入图片描述
另一个是复数

在这里插入图片描述

再来复习一下什么是复数

在这里插入图片描述

零值

在这里插入图片描述

在这里插入图片描述

类型转换,类型推断

没玩出什么新花样

package mainimport "fmt"func main() {// v := 42 // 修改这里看看!   // v is of type int// v := 42.1 // 修改这里看看!   // v is of type float64// v := 42.1 + 7i // 修改这里看看!   // v is of type complex128// v := false // 修改这里看看!   // v is of type bool// v := func() {} // 修改这里看看!   // v is of type func()fmt.Printf("v is of type %T\n", v)
}

常量

在这里插入图片描述

对fmt.print 的几个疑问

在这里插入图片描述

数值常量

在这里插入图片描述

Go 的常量在无类型状态下可以非常大,但一旦需要具体类型(比如 int),如果超出类型范围就会编译错误。

在这里插入图片描述

数学:左移运算符的理解

在这里插入图片描述
对应的右移运算符

在这里插入图片描述
总结

在这里插入图片描述

ok 基础的就这么多,第一天先这样吧 突然发现还有下一章,for 以及条件相关的,滚回来继续学了

for 循环

简单的循环跑一下 ,go 中的 for 循环没有括号
在这里插入图片描述

for 中的定义,以及步长都是可选的,可选之后,保存一下,分号就会变没的,之后的代码就太像 while
在这里插入图片描述

package mainimport "fmt"func main() {sum := 1for sum < 1000 {sum += sum}fmt.Println(sum) //1024
}

if else

在这里插入图片描述

好吧 我感觉这么写没啥用的写法,了解一下再说
在这里插入图片描述

在这里插入图片描述

也就是说,他先算,算完之后再打印

switch 的用法

switch 语句是编写一连串 if - else 语句的简便方法。它运行第一个 case 值 值等于条件表达式的子句。

Go 的 switch 语句类似于 C、C++、Java、JavaScript 和 PHP 中的,不过 Go 只会运行选定的 case,而非之后所有的 case。 在效果上,Go 的做法相当于这些语言中为每个 case 后面自动添加了所需的 break 语句

在 Go 中,除非以 fallthrough 语句结束,否则分支会自动终止。 Go 的另一点重要的不同在于 switch 的 case 无需为常量,且取值不限于整数。

这里跟 js 还是有点区别的,在 go 中,就没有 break 这个东西了。

if / esle if / else 的更好的替代

在这里插入代码片

defer 栈

  • 后进先出
  • 外层函数返回后执行
  • 推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用。

指针、结构体、切片

切片 s 的长度和容量可通过表达式 len(s) 和 cap(s) 来获取。

在这里插入图片描述

二维数组

package mainimport ("fmt""strings"
)func main() {// 创建一个井字棋(经典游戏)board := [][]string{[]string{"_", "_", "_"},[]string{"_", "_", "_"},[]string{"_", "_", "_"},}// 两个玩家轮流打上 X 和 Oboard[0][0] = "X"board[2][2] = "O"board[1][2] = "X"board[1][0] = "O"board[0][2] = "X"for i := 0; i < len(board); i++ {fmt.Printf("%s\n", strings.Join(board[i], " "))}
}

切片的追加

在这里插入图片描述

问题:为什么容积是 6 呢?

在这里插入图片描述

range 遍历

range 会解构出下标和值

当使用 for 循环遍历切片时,每次迭代都会返回两个值。 第一个值为当前元素的下标,第二个值为该下标所对应元素的一份副本。

在这里插入图片描述

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

相关文章:

  • Node.js 接入淘宝 API 实战:构建商品信息实时同步服务
  • Node.js SQL数据库:MySQL/PostgreSQL集成
  • 虚拟化网络连接与虚拟机嵌套
  • 无锡企业制作网站网站建设项目的费用做什么科目
  • Slack消息体->消息ID的设计
  • 如何轻松将 Outlook 联系人导出到 Excel
  • 图像尺寸测量仪应用Type-C接口:精准检测,赋能科技
  • C++仿mudo库高并发服务器项目:Buffer模块
  • 找能做网站的搜狗推广下架
  • 性能分析--perfetto工具使用
  • 【matlab】如何提取论文plot图中的数据
  • 手机网站开发的目的ppt免费背景图片
  • Java 核心知识点查漏补缺(一)
  • UE5 C++ CVar控制台命令字段使用
  • 从图像处理到AI识别:直播美颜sdk如何实现高效一键美颜?
  • ESD防护设计宝典(十三):电快速瞬变脉冲群(EFT)防护与整改
  • 做百度推广去些网站加客户二级域名免费申请网站
  • 婚介 东莞网站建设西部数码网站源码
  • 云计算实验4——CentOS中HBase的安装
  • Excel文件中的VBA脚本,在文件使用WPS编辑保存后无法执行
  • LLD(详细设计文档)输出标准模板
  • 【山西政务服务网-注册_登录安全分析报告】
  • 云原生安全深度实战:从容器安全到零信任架构
  • Java导出写入固定Excel模板数据
  • 合肥网站建设模板系统html怎么做商品页面
  • uniapp微信小程序页面跳转后定时器未清除问题解析与解决方案
  • 《从“直接对话”到 “集成开发调用”:智谱 GLM-4.6 引领 Coding 场景的效率跃迁》
  • 数据中心基础设施等级
  • 关于架空输电线识别树障or测距相关论文阅读
  • [go 面试] 深入理解并发控制:掌握锁的精髓