![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go语言学习笔记
血小板自动机
Acmer蒟蒻,深度学习炼丹师,DB魔法师,二次猿
展开
-
【go语言学习笔记】闭包和匿名函数
1.匿名函数和闭包的概念匿名函数: 声明函数时不显式声明函数名。闭包: 简单来说就是一个函数定义中引用了函数外定义的变量,并且该函数可以在其定义环境外被执行。这样的一个函数我们称之为闭包。实际上闭包可以看做一种更加广义的函数概念。因为其已经不再是传统意义上定义的函数。go语言中的匿名函数声明方法类似于js,而闭包声明类似于python。demo:package mainimport ...原创 2019-07-07 18:41:36 · 328 阅读 · 0 评论 -
【go语言学习笔记】go语言中特殊的几个格式字符串和复数类型
1.格式化字符串类型格式化字符串%T:可以打印变量的类型。a := 5 //自动推导赋值,int类型fmt.Printf("a type is % T\n", a)自动推导类型格式化字符串%v:可以推导变量的类型并打印出变量的值。a := 5fmt.Printf("a is %v\n", a)另外,还推荐使用%+v来打印结构体,这样可以以变量名:值的方式打印。packa...原创 2019-07-06 17:04:51 · 387 阅读 · 0 评论 -
【go语言学习笔记】go语言的类型转换
知识点go语言中不允许隐式类型转换,只能显式的进行类型转换,并且,当两个类型兼容才能进行显示转换,如char类型和整型是兼容的, int('a') 。package mainimport "fmt"func main() { // 当两个类型兼容才能进行显式转换 var flag bool flag = true fmt.Printf("flag = %d\n", flag)...原创 2019-07-06 17:09:48 · 266 阅读 · 0 评论 -
【go语言学习笔记】给类型起别名——typedef关键字
知识点这里给类型起别名类似c语言,只是语法稍稍不同,具体操作如下:package mainimport "fmt"func main() { type bigint int64 //给int64起一个别名为bigint var a bigint fmt.Printf("a1的类型为%T\n", a) //输出main.bigint type ( char byte...原创 2019-07-06 17:12:42 · 3194 阅读 · 0 评论 -
【go语言学习笔记】if语句以及带赋值语句的if语句
知识点go语言中,if语句有两种,一种的普通的if语句,一种是带赋值语句的if语句,if语句不带括号,类似python,并且,无论if语句下面有几条语句,都必须带上花括号,不能省略。具体用法如下:package mainimport "fmt"func main() { var a, b = 10, 5 if a > b { fmt.Println("a > b"...原创 2019-07-06 17:56:14 · 6698 阅读 · 0 评论 -
【go语言学习笔记】switch语句
知识点go语言中的switch语句,类似c语言,但是,每一个case最后的结束默认为break,所以可以省略。另外,go语言中增加了一个fallthrough关键字,该关键字表示不跳出case语句,带上后等价于c语言没带break语句的情况,不常用。具体用法有三种:1、普通switch语句2、带赋值语句的switch语句3、不带条件的switch语句package mainimp...原创 2019-07-06 18:03:48 · 279 阅读 · 0 评论 -
【go语言学习笔记】循环结构
知识点go语言中,循环结构只有for循环,没有while循环,并且,定义的变量必须使用,否则无法通过编译。for循环的语法有2种,一种的普通循环,另一种的迭代器循环,代码如下:package mainimport "fmt"func main() { for i := 1; i < 10; i++ { //for循环如果不写条件,则默认为真,死循环 fmt.Println...原创 2019-07-06 18:12:39 · 250 阅读 · 0 评论 -
【go语言学习笔记】函数
知识点go语言的函数定义更像是python和c语言的结合体,并且也有不定参数的传参以及地址传参方式,非常强大。下面举一些例子来详细说明:无参无返回值函数func MyFunc() { fmt.Println("无参返回值")}有参无返回值函数func MyFunc1(a int, b int) { fmt.Println(a + b)}// 如果同样类型,可以简写...原创 2019-07-07 13:04:03 · 132 阅读 · 0 评论 -
【go语言学习笔记】函数类型
知识点在go语言中,函数也是一种数据类型,可以通过typedef关键字给其起一个别名,这是go语言中多态的思想,这样定义类似一个函数指针。demo:// 多态的思想,类似于函数指针type FuncType func(int, int) int // 没有函数名,没有大括号,相当于c语言中的函数指针func minus(a, b int) int { return a - b}...原创 2019-07-07 13:07:30 · 150 阅读 · 0 评论 -
【go语言学习笔记】iota枚举
知识点itoa是go语言中的常量自动生成器,它不跟c语言样枚举可以隐式生成,必须显式指定,具体语法如下:常量组合赋值,iota默认从0开始,每次往下加一:const ( a = iota // 0 b = iota // 1 c = iota // 2 )每次iota遇到新的const,就会重置成0: const d = iota // 置0 const e =...原创 2019-07-06 16:55:44 · 236 阅读 · 0 评论 -
【go语言学习笔记】多变量多常量初始化方法
go语言没有办法像c语言那样使用逗号表达式来完成一连串的初始化(定义并赋值),我们可以用以下组合语句来完成:package mainimport "fmt"func main() { // 不同类型变量的声明(定义) //传统写法 var a int var b float64 a, b = 10, 3.2 fmt.Println("a = ", a) fmt.Println...原创 2019-07-06 16:50:29 · 984 阅读 · 0 评论 -
【go语言学习笔记】结构体
1.结构体的定义go语言中,结构体的声明非常类似c语言,具体定义方法如下:初始化方法有三种:顺序初始化,每个变量都必须初始化部分成员初始化,未初始化的变量被赋值成0结构体指针变量初始化package mainimport "fmt"// 定义一个结构体类型type Student struct { id int name string sex byte ag...原创 2019-07-09 09:52:12 · 172 阅读 · 0 评论 -
【go语言学习笔记】延迟调用关键字——defer
知识点go语言中,defer语句可以使函数调用在函数结束前调用,defer关键字后面必须接函数调用语句,不然编译器会报错。package mainimport "fmt"func main() { fmt.Println("aaaaaaaaa") //defer延迟调用,main函数结束前调用,defer语句后面必须接函数调用语句 defer fmt.Println("bbbb...原创 2019-07-07 18:47:19 · 223 阅读 · 0 评论 -
【go语言学习笔记】获取命令行参数
知识点go语言中,如果我们要获取命令行参数,则需要使用os包的Args来得到,这是一个字符串数组类型。package mainimport "fmt"import "os"func main() { list := os.Args //Args为参数列表,字符串数组 n := len(list) fmt.Println("n = ", n) for i := 0; i &l...原创 2019-07-07 22:15:20 · 137 阅读 · 0 评论 -
【go语言学习笔记】局部变量和全局变量
知识点全局变量: 定义在函数外部的就是全局变量,可以在任意函数中使用,但go语言中全局变量不能直接给其赋值。局部变量: 定义在{}里面的变量就是局部变量,只在大括号中有效,执行到定义变量的那句话,才开始分配空间,离开作用域自动释放。作用域: 变量的作用范围。demo:package mainimport "fmt"var a int //定义在函数外部的就是全局变量,可以在任意函...原创 2019-07-07 22:22:01 · 1061 阅读 · 0 评论 -
【go语言学习笔记】分文件编程
知识点go语言也跟其他语言一样,推荐分模块编程,这里类似java的包的概念,但是包的作用域不是由public和private等关键字决定的,而是被调用模块的函数首字母是否大写,如果大写,表示可以在外部调用,小写,表示私有,只能在本文件中调用。注: go语言中,必须给项目设置环境变量,编译器才能找到对应的包,这种不好的特性将在以后版本被废除。// package calc文件package...原创 2019-07-07 22:26:51 · 340 阅读 · 0 评论 -
【go语言学习笔记】指针
1.指针的基本操作go语言中,指针的用法类似c语言,具体操作请看demo:package mainimport "fmt"func main() { var a = 10 fmt.Printf("a = %d\n", a) //变量的值 fmt.Printf("&a = %p\n", &a) //变量的地址 // 保存某个变量的地址,需要指针类型,*int...原创 2019-07-07 22:32:08 · 112 阅读 · 0 评论 -
【go语言学习笔记】数组和切片
1.数组go语言中也配有数组这种数据结构,它的定义方式类似java,每一种定义都是一种类型,比如:var arr [50]int和var arr [100]int,他们分别是[50]int类型和[100]int类型。可以使用迭代器来遍历数组。demo:package mainimport "fmt"func main() { // 数组,同一个类型的集合 var arr [5...原创 2019-07-07 22:57:02 · 236 阅读 · 0 评论 -
【go语言学习笔记】随机数
知识点go语言中的随机数也是伪随机数,使用方法类似c语言,需要设置随机数种子,使用包math/rand以及time来完成。demo:package mainimport "fmt"import "math/rand"import "time"func main() { //设置种子,只需要一次,以当前时间作为种子 rand.Seed(time.Now().UnixNano(...原创 2019-07-07 23:04:26 · 198 阅读 · 0 评论 -
【go语言学习笔记】map
1.map的定义go语言内置有map这种数据结构,它由无序的键值对组成,跟大部分语言中的map用法非常相似。它的键不能由可变类型(引用语义)的结构类型担当,如切片、数组、函数等等。map只有len,没有cap。我们可以直接定义,或者通过make函数创建,通过make函数创建时,可以指定容量。package mainimport "fmt"func main() { // 无序结...原创 2019-07-09 09:40:21 · 162 阅读 · 0 评论 -
【go语言学习笔记】回调函数
知识点回调函数,函数参数是函数类型,这个函数就是回调函数,相当于传入函数指针,具体用法如下:package mainimport "fmt"// 回调函数,函数参数是函数类型,这个函数就是回调函数,相当于传入函数指针type FuncType func(int, int) int// 多态:多种形态,调用一个接口,实现不同的表现// 先有想法,后面再实现功能func Calc...原创 2019-07-07 13:09:32 · 234 阅读 · 0 评论