Go语言基础突破(一)——基础语法快速上手

news2024/11/28 16:25:49

文章目录

    • 一、本次学习重点内容:
    • 二、详细知识点介绍:
      • 1、什么是Go语言
        • 特点:
      • 2、为什么字节跳动全面使用go语言:
      • 3、开发环境——安装Golang:
      • 4、推荐编辑器:VScode、Goland
      • 5、基础语法
        • 1、HolleWorld
        • 2、基础语法——变量声明
        • 3、基础语法——if-else
        • 4、基础语法——循环
        • 5、基础语法——switch
        • 6、基础语法——数组
        • 7、基础语法——切片
        • 8、基础语法——map
        • 9、基础语法——函数
        • 10、基础语法——指针
    • 三、实践练习例子:
      • 开启一个http端口
    • 四、课后个人总结:

一、本次学习重点内容:

  • 本堂课的知识要点有哪些?

    1、go语言特性

    2、go基础语法

二、详细知识点介绍:

1、什么是Go语言

特点:

1.高性能、高并发

2.语法简单、学习曲线平缓

3.丰富的标准库

4.完善的工具链

5.静态链接

6.快速编译

7.跨平台

8.垃圾回收

2、为什么字节跳动全面使用go语言:

1.最初使用的 Python,由于性能问题换成了Go

2.C++不太适合在线 Web业务

3.早期团队非Java 背景

4.性能比较好

5.部署简单、学习成本低

6.内部 RPC和 HTTP框架的推广

3、开发环境——安装Golang:

参考一下三个网站:

https://go.dev/

https://studygolang.com/dl

https://goproxy.cn/

4、推荐编辑器:VScode、Goland

5、基础语法

1、HolleWorld

package main

import "fmt"

func main() {
   // 终端输出hello world
   fmt.Println("Hello world!")
}

运行结果:

image-20230126200858471

2、基础语法——变量声明

package main

import (
   "fmt"
   "math"
)

func main() {
   // 变量声明方式
   // 1 var 变量名 = 变量值(自动进行类型检测)
   var a = 1
   var b = "ok"
   var c = true
   var m, n = 3, 4
   fmt.Println(a, b, c, m, n)
   // 2 var 变量名 类型
   var a1 int
   var b1 string
   var c1 int = 20
   a1 = 100
   b1 = "b1ok"
   fmt.Println(a1, b1, c1)
   //  3 变量名 := 变量值 (自动类型检测)
   a2 := 10
   b2 := "b2"
   c2 := b2 + "ok"
   fmt.Println(a2, b2, c2)
   // 常量声明方式
   const s string = "常量"
   const h = 500000000
   const l = 3e20 / h
   fmt.Println(s, h, l, math.Sin(h), math.Sin(l))
}

运行结果:

image-20230126203114614

3、基础语法——if-else

package main

import "fmt"

func main() {
    
   if 7%4 == 0 {
      fmt.Println("ok")
   } else {
      fmt.Println("no")
   }

   if i := 10; i < 0 {
      fmt.Println(1)
   } else if i < 5 {
      fmt.Println(2)
   } else {
      fmt.Println(3)
   }
}

运行结果:

image-20230126203814926

4、基础语法——循环

package main

import "fmt"

func main() {
   //死循环
   for {
      fmt.Println("死循环")
      break
   }
   // 经典for循环
   for i := 0; i < 10; i++ {
      fmt.Println("经典for循环:", i)
   }
   // 替代while循环的for循环
   j := 0
   for j <= 5 {
      fmt.Println("替代while循环的for循环", j)
      j++
   }
   // 加强for循环
   arr := [3]int{11, 22, 33}
   for i, a := range arr {
      fmt.Println("加强for循环:", i, a)
   }
}

运行结果:

image-20230126205047295

5、基础语法——switch

package main

import (
   "fmt"
   "time"
)

func main() {
   //经典switch
   a := 3
   switch a {
   case 1:
      fmt.Println("a=", 1)
   case 2:
      fmt.Println("a=", 2)
   case 3, 4:
      fmt.Println("a=", 3 ,"or" ,4)
   default:
      fmt.Println("其他")
   }

   //允许使用判断语句的switch
   t := time.Now()
   switch {
   case t.Hour() < 12:
      fmt.Println("现在是上午", t)
   default:
      fmt.Println("现在是下午", t)
   }
}

运行结果:

image-20230126205836750

6、基础语法——数组

//go:build ignore
// +build ignore

package main

import "fmt"

func main() {
   //方式一
   var a [3]int
   a[2] = 1
   fmt.Println(a[2], len(a))
   //方式二
   b := [5]int{1, 2, 3, 4, 5}
   fmt.Println(b)
   //二维数组
   var c [3][3]int
   for i := 0; i < 3; i++ {
      for j := 0; j < 3; j++ {
         c[i][j] = i + j
      }
   }
   fmt.Println("二维数组", c)
}

运行结果:

image-20230126210942419

7、基础语法——切片

package main

import "fmt"

func main() {
   //声明 使用make()函数
   s := make([]string, 3)
   s[0] = "a"
   s[1] = "b"
   s[2] = "c"
   fmt.Println("get:", s[2])
   fmt.Println("len", len(s))
   //切片增加
   s = append(s, "d")
   s = append(s, "e", "f")
   fmt.Println(s)
   // 切片复制
   c := make([]string, len(s))
   copy(c, s)
   println(c) //打印地址
   fmt.Println(c)
   //常见切片操作
   fmt.Println(s[2:5])
   fmt.Println(s[:5])
   fmt.Println(s[2:])
}

运行结果:
image-20230126212355063

8、基础语法——map

//go:build ignore
// +build ignore

package main

import "fmt"

func main() {
   m := make(map[string]int)
   m["one"] = 1
   m["two"] = 2
   fmt.Println(m)        //map[one:1 two:2]
   fmt.Println(len(m))   //2
   fmt.Println(m["one"]) //1
   fmt.Println(m["two"]) //2

   r, ok := m["one"]
   fmt.Println(r, ok) // 1 ture

   delete(m, "one")
   fmt.Println(m) //map[two:2]

   m1 := map[string]int{"one": 1, "two": 2}
   fmt.Println(m1) //map[one:1 two:2]
   for k, v := range m1 {
		fmt.Println(k, v)
		//two 2
		//one 1
   }
}

9、基础语法——函数

//go:build ignore
// +build ignore

package main

import "fmt"

func main() {
   res := add(1, 2)
   fmt.Println(res) //3

   m := map[string]int{"one": 11, "two": 22}
   v, ok := exists(m, "two")
   fmt.Println(v, ok) //22 true
}
//常见定义方式
func add(a int, b int) int {
   return a + b
}
func add1(a, b int) int {
   return a + b
}
func exists(m map[string]int, k string) (v int, ok bool) {
   v, ok = m[k]
   return v, ok
}

10、基础语法——指针

//go:build ignore
// +build ignore

package main

import "fmt"

func main() {
   n := 5
   add1(n)
   fmt.Println(n)// 5
   add2(&n)
   fmt.Println(n)// 7
}
func add1(a int) {
   a += 2
}
func add2(a *int) {
   *a += 2
}

三、实践练习例子:

开启一个http端口

package main

/*
开启一个http服务
*/
import (
	"fmt"
	"net/http"
)

func main() {
	fmt.Println("ok")
	http.Handle("/", http.FileServer(http.Dir(".")))
	http.ListenAndServe("localhost:8080", nil)
}

运行结果:

image-20230126195115339

四、课后个人总结:

本章基础语法部分感觉和还算比较容易,总结go中有c++的结构体和指针。go中for循环和switch十分灵活,数组切片和python一样也十分灵活。

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

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

相关文章

Ubuntu 玩机笔记

键盘Fn无法切换功能键与多媒体键 终端输入&#xff1a; echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode然后再长按 FnXL 约四秒即可成功使用Fn切换功能键与多媒体键。 永久生效 以上方法只是输入命令后生效&#xff0c;想要永久生效&#xff0c;可以进行如下操…

深度学习-吴恩达(C5)训练词向量

2.1 词汇表征 上周我们学习了RNN、GRU单元和LSTM单元。本周你会看到我们如何把这些知识用到NLP上&#xff0c;用于自然语言处理&#xff0c;深度学习已经给这一领域带来了革命性的变革。其中一个很关键的概念就是词嵌入&#xff08;word embeddings&#xff09;&#xff0c;这…

手机提供GMS支持(适用安卓和鸿蒙系统)

手机提供GMS支持 - 适用安卓和鸿蒙系统前言方式1&#xff1a;安装GMS套件&#xff08;不推荐&#xff09;方式2&#xff1a;安装OurPlay&#xff08;推荐&#xff09;方式3&#xff1a;安装Gspace&#xff08;推荐&#xff09;前言 本文提供多种为手机&#xff08;安卓和鸿蒙系…

数据库系统概论①——数据库系统基本概念

文章目录1、数据库的相关术语1.1 数据(Data)1.2 数据库(Database,简称DB)1.2.1 数据库的定义&#xff1a;数据库是长期储存在计算机内、有组织的、可共享的数据集合。1.2.2 数据库的特征1.3 数据库管理系统&#xff08;DBMS&#xff09;1.3.1 DBMS的主要功能1.4 数据库系统&…

自己动手写一个操作系统——MBR(4)_调试_elf_bin

文章目录前言elf 文件指定代码入口地址添加调试信息代码检验调试小结前言 通过 GDB 我们可以跟踪程序的执行&#xff0c; 并且能够看到寄存器的状态&#xff0c; 但是&#xff0c;上面这种调试方式&#xff0c;没有和代码对应起来&#xff0c;以致于我们无法直观地知道 CP…

CodeSYS之一EtherNET驱动禾川电机

硬件:HCFA Q0-1100系列CPU X3EB 驱动器, SV-X2MHO40A伺服电机,24V开关电源。 硬件连接: 电机三相线和编码器线接X3EB驱动器,24V电源接X3EB驱动器,驱动器IN网口接 CPUPort2,CPU接24V电源,Port1 接电脑。 这部分有问题可以直接进禾川官网 一、驱动器调试 接好先后,按驱动…

边缘检测、Padding、stride、三维卷积

目录1.边缘检测(edge detection)当我们做物体识别的时候&#xff0c;一般神经网络的前几层会进行边缘检测&#xff0c;然后检测到物体的一部分&#xff0c;最后检测到整个物体。边缘检测例子&#xff1a;垂直边缘检测器&#xff1a;中间的一个3x3的矩阵&#xff0c;我们称之为过…

力扣sql简单篇练习(六)

力扣sql简单篇练习(六) 1 变更性别 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # set子句中也是可以使用if函数的 UPDATE Salary SET sexif(sexf,m,f)1.3 运行截图 2 销售员 2.1 题目内容 2.1.1 基本题目信息1 2.1.2 基本题目信息2 2.1.3 示例…

代码随想录--二叉树章节总结 Part I

代码随想录–二叉树章节总结 Part I 1.Leetcode144 前序遍历二叉树 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历 解题思路1&#xff1a;使用递归解决。 public List<Integer> preorderTraversal(TreeNode root) {ArrayList<Integer> list …

c中对宏的理解(面试题)

1、gcc的编译过程&#xff1a;预处理、编译、汇编、链接 预处理&#xff1a;宏替换、删除注释、头文件包含、条件编译 -E &#xff08;不会发生报错&#xff09;生成预编译文件 将 01_code.c文件使用 gcc -E 01_code.c -o 01.i生成预编译文件01.i 可以10行的源文件看见生成800…

【c语言进阶】枚举与联合体的基本知识大全

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;c语言学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我…

1600_Cmake学习笔记_Cmake实践学习

全部学习汇总&#xff1a; GreyZhang/g_cmake: my learning notes for cmake tool. (github.com) 之前考虑过是否要学习Cmake&#xff0c;经过各种对比之后放弃了&#xff0c;我选择了去学习scons。在实际的工作以及学习中scons也的确给了我很大的受益。当时出于各种方面的原因…

PyQt5开发环境搭建 1.1 软件安装

写在前面的话&#xff08;1&#xff09;相对而言&#xff0c;python&#xff0c;PyQt5安装还是比较快的。Qt这个又大又慢。Eric也是需要比较长的时间。&#xff08;2&#xff09;安装失败很正常&#xff0c;多尝试几次&#xff0c;多查查&#xff0c;努力装好软件。安装和配置是…

【Linux】VM与Linux的安装

1.1 VMWare安装 1&#xff09;VMware Workstation Pro安装向导 2&#xff09;VMware Workstation安装的许可协议。 3&#xff09;VMware Workstation安装路径。 4&#xff09;VMware Workstation增强型键盘功能。 5&#xff09;VMware Workstation软件检查更新和帮助完善 6&am…

Linux常见的进程间通信

目录管道pipe匿名管道接口介绍示例代码fifo命名管道接口介绍代码示例匿名管道与命名管道的区别shm共享内存接口介绍相关指令代码示例特点总结信号信号量socket套接字管道 管道是一种较老的&#xff0c;半双工通信方式&#xff0c;即数据只能向一个方向流动&#xff08;即一个进…

力扣 2303. 计算应缴税款总额

题目 给你一个下标从 0 开始的二维整数数组 brackets &#xff0c;其中 brackets[i] [upperi, percenti] &#xff0c;表示第 i 个税级的上限是 upperi &#xff0c;征收的税率为 percenti 。税级按上限 从低到高排序&#xff08;在满足 0 < i < brackets.length 的前提…

spring笔记下(AOP、事务管理)

一、AOP概述 1. AOP介绍 AOP(Aspect Oriented Programming)&#xff1a;面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构&#xff0c;是oop的延续。&#xff08;OOP面向对象编程&#xff09; AOP作用&#xff1a;在不惊动原始设计的基础上为其进…

LeetCode刷题模版:221 - 230

目录 简介221. 最大正方形222. 完全二叉树的节点个数223. 矩形面积224. 基本计算器【未理解】225. 用队列实现栈226. 翻转二叉树227. 基本计算器 II【未理解】228. 汇总区间229. 多数元素 II230. 二叉搜索树中第K小的元素结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有…

【学习打卡 Free-Excel 】Task6 查找函数

文章目录1. VLOOKUP用法示例注意情况一情况二2. 通配符用法示例3.XLOOKUP用法匹配类型搜索模式1. VLOOKUP 用法 【VLOOKUP函数】VLOOKUP&#xff08;要查找的值&#xff0c;查找区域&#xff0c;要返回的结果在查找区域的第几列&#xff0c;精确匹配或近似匹配&#xff09;示…

JAVA Web 常见问题解决方案(持续更新,欢迎投稿常见问题)

大家有什么问题未解决的可以试图联系博主&#xff0c;群号在主页的详细资料 都是博主自己学习过程中遇到的问题&#xff0c;大家有什么常见问题欢迎Git 问题集目录 找到适合自己版本的pom依赖 IDEA实体类快速创建 get(),set(),toString()方法 报错Cannot find class: com.mysq…