go基础总结

ops/2024/12/12 19:27:35/

最近参加字节跳动后端青训营,技术栈是go。go跟Java还是有些区别的,所以自己做点笔记来总结总结go的基础语法

数据类型

go的数据类型有以下几类:

  1. 数值类型:整形分为(u)int8、(u)int16、(u)int32、byte、rune、uintptr…,浮点型分为float32、float64、complex32、complex64(复数类型,复数分为实数和虚数,高中知识…)
  2. 布尔类型
  3. 字符串类型
  4. 派生类型:切片、指针、数组、结构(struct)、Channel类型、函数类型、接口类型

字符串类型说明:

  1. 字符:go无char,想要表示单个字符时,进包含acill码时用byte,其余用rune(类似int32)。tips:直接输出为数字,向输出字符用%c(不同于Java)
var c rune = 'a'
fmt.Println(c)
fmt.Printf("%c\n", c)

以上输出为

在这里插入图片描述

  1. 字符串:

字符串是基本数据类型

在这里插入图片描述

双引号转义输出,点号原生输出:

	str3 := "我要换行\n换好啦:)\n"str4 := `我想换行\n换不了:(\n`

在这里插入图片描述

派生类型

  1. 切片:为可变长的数组,当空间不足时,底层自动复制扩容,类似于List
golang">	var slice []intslice1 := make([]int,5)fmt.Println("slice slice1:",slice,slice1)
  1. 指针
    go里的指针与c语言类似
golang">var ip *int
var name *string

&获取地址,*取地址里的内容

golang">var name = "fdsa"
var namestr *string
namestr = &name
fmt.Println(namestr)//输出地址
fmt.Println(*namestr)//输出fdsa

3.map,创建并声明一个map:

golang">package mainimport ("fmt"
)func main() {myMap := map[string]int{"apple":  1,"banana": 2,"cherry": 3,}// 遍历 map 的键值对for key, value := range myMap {fmt.Printf("Key: %s, Value: %d\n", key, value)}
}

range来遍历一个map,第一个位置是key,第二个位置是value,如果不需要key只遍历value的话,第一个位置用_代替

golang">for _,value := range myMap {fmt.Println("Value:", value)
}
  1. 数组
golang">var arr []int = []int{1, 2, 3, 4, 5}
for i, v := range arr {fmt.Printf("Index: %d, Value: %d\n", i, v)
}

变量声明

  1. go中声明过的变量不使用会报编译错误
  2. 声明变量一般使用var关键字,可以指定变量类型也可以由编译器自动推断:
golang">var url string="fa"//手动指定
fmt.Println(url)
var name ="fdsa"//自动推断
fmt.Println(name)
  1. 可用:=一步完成变量的声明和初始化
golang">pass := "fds"
fmt.Println(pass)
  1. go的变量类型是后置的,一定是先写变量名,再写变量类型!

控制语句

if else

go里的if、else if的条件没有():

a := 10
if a < 10 {fmt.Println("小于")
} else if a > 10 {fmt.Println("大于")
} else {fmt.Println("等于")
}

循环

go里面没有while、dowhile,只有for,最简单的for循环就是一个for后面什么都不写,就是死循环:

golang">for {fmt.Println("11")
}

经典三段式for:

golang">for i := 0; i < 10; i++ {fmt.Println(i)
}

和其他语言一样,每一段都可以省略,也可用continue、break跳出循环

swich

和其他语言大差不差

函数

go里面函数使用func声明,并且原生支持返回多个值,实际业务中,通常第一个是返回的真正结果,第二个是错误信息。注意go的变量类型是后置的

golang">//实现两数相加
func add(a int, b int) (result int, e string) {result = a + breturn result, "ok"
}

http://www.ppmy.cn/ops/141319.html

相关文章

头歌 计算机操作系统 动态分区算法

第1关&#xff1a;首次适应算法 任务描述 假设初始状态下可用的内存空间为55MB&#xff0c;并有如下的请求序列&#xff1a; 作业1申请15MB 作业2申请30MB 作业1释放15MB 作业3分配8MB 作业4分配6MB 作业2释放30MB 请采用首次适应算法进行内存块的分配和回收&#xff0c;并打印…

css 权重

发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 CSS 权重&#xff08;或称为 CSS 优先级&#xff09;决定了当多个 CSS 规则作用于同一元素时&#xff0c;哪一条规则会被应用。…

Linux Minio 安装

找个安装目录 /usr/local/ 下 mkdir minio cd minio mkdir data mkdir bin chmod 777 data/ chmod 777 bin/ 日志文件 touch minio.log #wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio wget https://dl.minio.io/server/minio/release/linux-amd64/min…

React之react-redux的使用

前言 前面我们讲过了redux的配置及使用&#xff0c;下面我们看一下react-redux的是如何使用的, 首先我们先了解一下redux和react-redux的关系&#xff1f; redux和react-redux的关系 redux是react中进行state状态管理的JS库&#xff08;并不是react插件&#xff09;&#xff0c…

图论【Lecode_HOT100】

文章目录 1.岛屿数量No.2002.腐烂的橘子No.9943.课程表No.2074.实现Trie&#xff08;前缀树&#xff09;No.208 1.岛屿数量No.200 class Solution {public int numIslands(char[][] grid) {if (grid null || grid.length 0) {return 0;}int numIslands 0;int rows grid.len…

Redis02 SpringBoot整合Redis

使用方式 1.创建boot项目引入Web(Spring Web)NoSQl(Spring Data Redis(AccessDriver)) 2.修改配置文件 spring:redis:host: 127.0.0.1port: 6379password: 123456lettuce:pool:max-active: 8 #最大连接max-idle: 8 #最大空闲连接min-idle: 0 #最小空闲连接max-wait: 1000ms #…

PT8M2103 触控 I/O 型 8-Bit MCU

1 产品概述 ● PT8M2103 是一款可多次编程(MTP)I/O 型8位 MCU&#xff0c;其包括 2K*16bit MTP ROM、256*8bit SRAM、PWM、Touch 等功能&#xff0c;具有高性能精简指令集、低工作电压、低功耗特性且完全集成触控按键功能。为各种触控按键的应用&#xff0c;提供了一种简单而又…

109.【C语言】数据结构之二叉树层序遍历

目录 1.知识回顾 2.代码实现 准备工作 LevelOrder函数 代码框架 关键代码 3.执行结果 1.知识回顾 层序遍历参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章 截取的部分内容 定义:按层的方式遍历(,设n为树的深度,h1-->h2-->h3-->...-->hn) 以下面…