前端转golang从小白到实战自学笔记(2023/3/1)

news2024/11/16 21:22:08

了解:https://www.runoob.com/go/go-concurrent.html

golang学习方向


  1. 区块链研发工程师

  1. go服务器=>(特点:数据处理,处理大并发)/游戏软件工程师

  1. golang分布式/云计算软件工程师(盛大云、cdn、京东)

统称golang核心编程

应用领域


区块链应用

后台服务器应用

云计算/云服务后台应用

学习方法


go语言吉祥动物:金花鼠

如何深入学习一个新技术知识点


什么是程序


why is go语言


go的诞生


go语言特点


go语言开发工具


配置Go环境


$env:GO111MODULE = "on"
$env:GOPROXY = " http://goproxy.cn"

golang标识符、关键字、命名规则


标识符的组成

1.标识符由数字、字母和下划线( _)组成。123 abc _

2.只能以字母和下划线(_)开头。abc123 _sysVar 123abc

  1. 标识符区分大小写。 name Name NAME

// 标识符命名
package main
import "fmt"
func main() {
    // 正确写法
    var name string
    var age int
    var _sys int
    // 错误写法
    var 1name string
    var &age int
    var !email
}
// 语言关键字 举例
func main() {
    if  condition {
    }
    append()  
}

// 命名规范

golang变量


变量是计算机语言中能储存计算结果或能表示值的抽象概念不同的变量保存的数据类型可能会不一样

// 变量声明的语法
varidentifier type
var: 声明变量关键字
identifier:变量名
type: 变量类型
注意:变量一旦声明必须使用
package main
func main(){
    // 声明赋值 初始化
    var name string = "tom"
    var age int = 20 
    // 声明赋值类型推断自动判断类型 初始化
    var name = "tom"
    var age = 20 
    // 第一种
    var name string
    var age int
    var m bool
    // 第二种
    var (
        name string
        age int
        m bool
    )
    // 初始化多个变量及赋值
    var name,age,b = "tom",20,true
    //短变量声明 := 只能用在函数内部
    name := "tom"
    age := 10
    // 匿名变量 省略声明 函数调用的方式使用
    func a()(string, inta) {
        return "tom", 20
    }
    使用 name, age = a()
}

golang语言常量


常量,就是在程序编译阶段就确定下来的殖,而程序在运行时则无法改变该值。在Go程序中,常量可以是数值类型(包括整型、浮点型和复数类型) 、布尔类型、字符串类型等。

const constantName[type] = value
const PI float64 = 3.14
const PI2 = 3.145 // 可以省略
const (
    width = 100
    height = 200
)
const i,j = 1,2
const a,b,c = 1,2,"foo"

iota 类似于 i++

const (
a = iota
a1 = iota
_ // 跳过的意思 不过还是要+1
a2 = iota
)

golang数据类型


golang基于架构的类型,例如:int、uint、uintptr
输出类型
fmt.Printf("%T\n",name) // string 类型
数组类型
a := [2]int{1,2}

golang布尔类型


var a:bool = true
var b:bool = false
// 用法 
// 注意 不能用0和非0表示bool类型
if age >= 18 {
    fmt/Println("ni")
}

golang数字类型MP4


func main {
 var i8 int8
 var i16 int16
 var ui8 uint8
 

}

golang字符串


var html string = <html></html>
var str string = "1231223"
var dstr string = `
1
2
3
`
var pin = html + str
strings.Join([]string{html,str},",") // 字符串连接
var buffer bytes.Buffer // 缓存区
buffer.WriterString("tom")
// 切片
a := 2
b := 5
s[a:b] // 从a到b-1区间截取
s[:b] // 从0到b-1区间截取
s[a:] // 从0到最后区间截取
len(s) // 获取字符串长度
strings.Split(s, "") // 数组截取

golang格式化输出


fmt.Pringf()
// 结构图题
type WebSite struct {
    Name string
}
func main() {
    site := WebSite{Name:"docke360"}
}

golang运算符


golang中的流量控制


golang中的if语句


golang中的嵌套if语句


golang中switch的用法


golang中for循环


golang中for range循环


golang中goto关键字


golang中数组


golang中访问数组元素


golang中切片


golang中切片初始化


golang中切片的遍历


golang中切片的添加删除


golang中map


golang中map遍历


golang中函数


golang中函数返回值


golang中函数参数


golang中函数类型和函数变量


golang中高阶函数


golang中匿名函数


golang中闭包


golang中递归


golang中defer语句


golang中init函数


golang中指针


golang中指向数组的指针


golang中类型定义和类型别名


golang中结构体


golang中结构体初始化


golang中结构体指针


golang中结构体作为函数参数


golang中结构体的嵌套


golang中方法


golang中方法接收者类型


golang中接口


golang中接口值类型接收者和指针类型接收者


golang中接口和类型的关系


golang中接口嵌套


golang中接口实现ocp设计原则


golang中使用oop思想的实现和方法


golang中继承


golang中构造函数


golang中包


golang中包管理工具go mod


golang中并发编程之协程


golang中并发编程之通道channel


golang中并发编程之WaitGroup实现同步


golang中并发编程之runtime包


golang中并发编程之Mutext互斥锁实现同步


golang中并发编程之channel的遍历


golang中并发编程之select


golang中并发编程之Timer


golang中并发编程之Ticker


golang中并发编程之原子变量的引入


golang中并发编程之原子操作详解

golang中标准库os模块-文件目录相关


golang中标准库os模块-File文件读操作


golang中标准库os模块-File文件写操作


golang中标准库os包进程相关操作


golang中标准库os包和环境相关的方法


golang中标准库io包input output


golang中标准库ioutil包


golang中标准库bufio读相关操作


golang中标准库bufio写相关操作


golang中标准库bufio Scanner相关方法


golang中标准库log


golang中标准库builtin


golang中标准库bytes常用函数


golang中标准库bytes Reader类型


golang中标准库bytes Buffer类型


golang中标准库errors


golang中标准库sort包


golang中标准库time


golang中标准库json


golang中标准库xml


golang中标准库math


golang中操作mysql数据库-准备数据库和表


golang中操作mysql数据库-安装配置mysql驱动


golang中操作mysql数据库获得数据库连接


golang中操作mysql数据库-插入数据


golang中操作mysql数据库-查询操作


golang中操作mysql数据库-更新数据


golang中操作mysql数据库-删除数据


golang中操作MongoDB-BSON简介


golang中操作MongoDB-添加文档


golang中操作MongoDB-查找文档


golang中操作MongoDB-更新文档


golang中操作MongoDB-删除文档


gorm概述


gorm声明模型


gorm连接到数据库


gorm创建记录


gorm查询记录


gorm更新


gorm删除


gorm原生SQL和SQL构建器


gorm关联关系Belongs To(属于)


gorm关联关系值Has One(有一个)


gorm关联关系之Has Many


gorm关联关系之Many To Many


gorm关联关系之实体关联


gorm session配置


gorm事务控制


git简介


git的安装和配置


git的四个工作区


git文件的四种状态


git常用命令


git配置用户签名


git初始化本地仓库


git查看状态


git将代码添加到暂存区


git提交代码


git修改并提交代码


git项目版本切换


git分支简介


git分支常用命令


git合并分支


git合并解决冲突


git团队协作


gitHub创建远程仓库


gitHub推送本地仓库


gitHub拉取远程仓库


gitHub克隆远程仓库


gitHub团队内协作


gitHub跨团队协作


gitHub免密登录


配置git忽略文件


IDEA集成git初始化本地仓库


IDEA集成git切换版本


IDEA集成git创建和切换分支


IDEA集成git合并分支


IDEA集成git合并分支并解决冲突


IDEA中配置GitHub


IDEA中推送项目到github


IDEA中配置从github拉取项目


克隆gitHub中的项目


gitee码云简介


IDEA集成码云Gitee


gitlab简介


gitlab的安装与初始化


IDEA集成gitlab


为什么使用Docker


Docker简介


安装Docker


Docker中央仓库


Docker镜像操作


Docker容器


准备一个web项目


创建MySQL容器


创建Tomcat容器


将项目部署到tomcat


Docker数据卷


Dockerfile


Docker自定义镜像


下载安装Docker-compose


Docker-compose管理mysql和tomcat容器


使用Docker-compose命令管理容器


使用Docker-compose和Dockerfile管理镜像和容器


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis主要流程源码分析

分层架构图 主要流程图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9uhH9IK-1677658947721)(https://note.youdao.com/yws/public/resource/7f152b4b25320263d411a49583d3f4db/xmlnote/WEBRESOURCE9ea90840088eaeaa4a463bbc3f1912e8/17619)] 主…

索引优化与查询优化

1.哪些维度可以进行数据库调优 索引失效、没有充分利用到索引–》索引建立关联查询太多JOIN (设计缺陷或不得已的需求)–》SQL优化服务器调优及各个参数设置(缓冲、线程数等)–》调整my.cnf数据过多–》分库分表 大方向上完全可以分成 物理查询优化和 逻辑查询优化 两大块 物…

记录一次挖矿病毒kthreaddk和rcu_bj,导致CPU飙高处理

htop命令 存在kthreaddk和rcu_bj进程&#xff0c;cpu飙高 占用一般cpu或者70-80% 1、检查定时任务 查看是否有 # crontab -l 检查root账号是否有异常定时任务 有的话crontab -e 修改定时任务保存 并检查所有的用户有没有定时任务( 注&#xff1a;我的是gitlab git账户被入侵)异…

Nginx 配置详解(二)

序言Nginx的代理功能与负载均衡功能是最常被用到的&#xff0c;描述一些关于代理功能的配置&#xff0c;再说明负载均衡详细。Nginx 代理服务的配置说明1、设置 404 页面导向地址error_page 404 https://www.runnob.com; #错误页 proxy_intercept_errors on; #如果被代理服务…

PowerShell Install Mysql 5.7

MySQL介绍 MySQL 是最流行的关系型数据库管理系统&#xff0c;在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。 mysql download Mysql ServerdownloadPowershell 使用使用参数参考 前提条件 开启…

机器学习算法-KNN、决策树

目录1、最近邻算法 KNN1.1 K的选择1.2 案例&#xff1a;鸢尾花2、决策树2.1 决策树介绍2.2 案例&#xff1a;鸢尾花数据2.3 补充1、最近邻算法 KNN 原理&#xff1a;找到K 个与新数据最近的样本&#xff0c;取样本中最多的一个类别作为新数据的类别 要点&#xff1a;距离—是欧…

Three.js上手——搭建Vue3+Three.js项目

上一篇文章 Three.js初试 介绍了一些 Three.js 的基本概念&#xff0c;这一篇主要是介绍一下它的应用。 结合 Vue3 Vite 一起搭建一个项目。 项目初始化 Vite 项目构建 兼容性注意 Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Nod…

代码随想录【Day29】|491. 递增子序列、46. 全排列、47. 全排列 II

491. 递增子序列 题目链接 题目描述&#xff1a; 给定一个整型数组, 你的任务是找到所有该数组的递增子序列&#xff0c;递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说明: …

教务选课排课系统

技术&#xff1a;Java、JSP等摘要&#xff1a;Internet网是目前全球最大的计算机通信网&#xff0c;它遍及全球几乎所有的国家和地区。www系统是一个大型的分布式超媒体信息数据库&#xff0c;它极大的推动了Internet的发展&#xff0c;己经成为Internet中最流行、最主要的信息…

防抖节流函数

防抖和节流对于每一个开发者来说&#xff0c;都不陌生。防抖和节流的概念其实最早并不是出现在软件工程中&#xff0c;防抖是出现在电子元件中&#xff0c;节流出现在流体流动中。 而JavaScript是事件驱动的&#xff0c;大量的操作会触发事件&#xff0c;加入到事件队列中处理…

骨传导耳机发声原理是什么,如何选购骨传导耳机

骨传导耳机很早以前就已经有了&#xff0c;但真正流行到运动圈里也还是最近两年的时间&#xff0c;所以导致很多人对骨传导耳机还不是很了解&#xff0c;不明白其工作原理是什么&#xff0c;在购买骨传导耳机时也总是会感到纠结&#xff0c;不知如何下手&#xff0c;作为一个多…

香港双重牌照、准入安排和禁止事项等重要制度已明确 20多万字的《虚拟资产咨询文件》以证雄心

前不久&#xff0c;香港证监会就加密货币交易发布的《有关适用于获证券及期货事务监察委员会发牌的虚拟资产交易平台营运者的建议监管规定的咨询文件》&#xff08;以下简称《咨询文件》&#xff09;&#xff0c;并如期就有关监管虚拟资产交易平台的建议展开咨询&#xff0c;以…

制造业数据质量提升的方法和实践

制造业的数据治理尚处于早期阶段&#xff0c;而数据质量管理是所有数据类项目重点关注的领域。数据治理以数据标准、数据质量和元数据的管理为根本&#xff0c;是企业实现数据资产价值创造的基础。上周&#xff0c;在由武汉市经济和信息化局主办的“万企育才工程”之《制造业数…

随机森林在sklearn中的实现

目录 一.集成算法 二.sklearn中的集成算法模块ensemble 三.RandomForestClassifier(随机森林分类器) 四.重要参数 1.基评估器参数 2.随机森林参数 五.重要属性和接口 六.Bagging的另一个必要条件 七.RandomForestRegressor(随机森林回归器) 八.机器学习中调参的基本思…

2023 年 6 大智能合约语言

如果你想成为一名 Web3 开发人员&#xff0c;你需要知道如何编写智能合约&#xff0c;智能合约是所有 Web3 应用程序的支柱。 简而言之&#xff0c;智能合约是在区块链网络上部署和执行的计算机程序&#xff0c;提供确定性保证&#xff0c;使多方能够达成一致的、防篡改的结果…

CSDN时隔一年,我又回来了还愿

CSDN时隔一年&#xff0c;我又回来了还愿 去年的今天我申请到了Jetbrains学生试用,前两天刚买了JetBrains。 特别感谢Jetbrains和Jetbrains的客服小姐姐。 情况说明&#xff1a; 由于本人读非全日制大学&#xff0c;每周也同全日制一样上五天学放二两天。首先非全日制已经不符…

vue - vue是mvvm模型吗?

先说明一下什么是标准的mvvm模型&#xff1a; M: Model&#xff1b;既是数据&#xff0c;主要负责业务数据相关&#xff1b;V: View&#xff1b;即是视图&#xff0c;展示给用户看的页面&#xff0c;细分下来就是htmlcss层&#xff1b;VM: ViewModel&#xff1b;是连接界面View…

ZOJ-搜索专题

1002 题意 思路 深搜&#xff0c;每个格子都搜一遍。技巧dfs(cnt,ans)dfs(第几个格子&#xff0c;答案)&#xff1b; 代码 #include <iostream>using namespace std;int n,i,j,ans; char s[5][5];int c_put(int n,int m) {for (i n-1;i > 0;i --) {if (s[i][m] …

怎么解决SPA首屏加载速度慢?

首屏加载 首屏时间&#xff08;First Contentful Paint&#xff09;&#xff0c;指的是浏览器从响应用户输入网址地址&#xff0c;到首屏内容渲染完成的时间&#xff0c;此时整个网页不一定要全部渲染完成&#xff0c;但需要展示当前视窗需要的内容 首屏加载可以说是用户体验…

LeetCode第2577题-在网格图中访问一个格子的最少时间-python实现-图解思路与手撕代码

LeetCode第2577题-在网格图中访问一个格子的最少时间-python实现-图解思路与手撕代码 文章目录一、题目描述二、解题思路与代码实现1.解题思路2.代码实现总结一、题目描述 二、解题思路与代码实现 1.解题思路 这道题求最短距离&#xff0c;首先检查起始点0,0的右边0,1和下边1…