注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记 Go词法单元 词法分析编译器编译程序的第一步就是将源程序分割为一个个独立的token 关键字 Go语言总共25个关键字,分为3大类 引导程序整体结构的...for range break continue 循环 switch select type case default fallthrough switch select件判断 goto 跳转 标识符 编程语言的标识符用来标示变量...操作符 操作符就是语言所使用的符号集合 , 包括运算符、显式的分隔符,以及其他语法辅助符号。 操作符不但自身是一个 token,具备语法含义,同时其自身也是分隔其他 token 的分隔符。...Go 中常量分为布尔型、字符串型和数值型常量。常量存储在程序的只读段里( .rodata section )。...go不支持指针运算 go支持返回局部变量的指针,go编译器使用“栈逃逸"机制将这种局部变量的空间分配在堆上。
概念 函数式编程VS函数指针 函数是一等公民:参数、变量、返回值都可以是函数 高阶函数 函数->闭包
Go注释 //单行注释 /* */多行注释 Go的内置关键字 default select defer go goto fallthrough range package(包) import(...func(方法) map(map类型) switch case if else for continue break const(定义常量) chan(通道,用于多个服务器之间的通道,用于并发) Go
欢迎各位编程爱好者们!今天我们将进入Go语言的面向对象编程(OOP)世界,一窥这门语言如何运用OOP思想来组织和构建程序。...Go语言中的面向对象 尽管Go语言相对于其他语言来说在OOP方面更加简洁,但它仍然支持面向对象编程,让我们可以使用OOP的思想构建高效的应用程序。...对比传统OOP语言 与传统的面向对象编程语言(如Java、C++)相比,Go语言在面向对象方面有一些独特之处。例如,Go语言中没有类的概念,而是通过结构体和接口来实现对象和多态性。...此外,Go语言的封装是基于命名约定的,而不是依赖于访问修饰符。 尽管有这些差异,Go语言仍然提供了一种清晰而简洁的方式来进行面向对象编程,通过结构体、方法和接口来构建灵活且可维护的代码。...最佳实践:简洁而强大 在使用Go语言进行面向对象编程时,有一些最佳实践可以帮助我们写出更加简洁而强大的代码。 选择组合而不是继承:Go语言鼓励使用组合来构建复杂对象,而不是继承。
概念 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。...语言特色 1.简洁、快速、安全 2.并行、有趣、开源 3.内存管理、数组安全、编译迅速 语言用途 Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。...安装包地址 windows下载地址: https://golang.google.cn/dl/ 语言结构 Go 语言的基础组成有以下几个部分: 1.包声明 2.引入包 3.函数 4.变量 5.语句 &...需要注意的是 { 不能单独放在一行 Go 语言基础语法 Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。...无空格: fruit=apples+oranges; 在变量与运算符间加入空格,程序看起来更加美观,如: fruit = apples + oranges; Go 语言数据类型 在 Go 编程语言中,
Go 标记 Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成: fmt.Println("Hello, World!")...6. ) ---- 行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。...语言的关键字) a+b(运算符是不允许的) 关键字 下面列举了 Go 代码中会使用到的 25 个关键字或保留字: var和const :变量和常量的声明 var varName type 或者 varName...语言还有 36 个预定义标识符: append bool byte cap close complex complex64 complex128 uint16 copy false float32 float64...Go 语言的空格 Go 语言中变量的声明必须使用空格隔开,如: var age int; 语句中适当使用空格能让程序看易阅读。
GO语言基础 一、初识Go语言 1、go语言特性 垃圾回收:内存自动回收,再也不需要开发人员管理内存,只需要new分配内存,不需要释放 天然并发:从语言层面支持并发,非常简单,并且 goroute 轻量级线程...语言基础 1、文件名&关键字&标识符 所有go源码以.go结尾 标识符以字母或下划线开头,大小写敏感 可以用 _ 来接收对象,它是特殊的标识符,用来忽略结果 _ = calc.Add(1, 2) 保留关键字...4、数据类型和操作符 基本概念 Go 是强类型语言,因此不会进行隐式转换,任何不同类型之间的转换都必须显式说明 Go 不存在像 Cpp 那样的运算符重载,表达式的解析顺序是从左至右 Go 对于值之间的比较有非常严格的限制...3、init()初始化函数 在Go 语言程序执行时导入包语句会自动触发包内部init()函数的调用。 需要注意的是:init() 函数没有参数也没有返回值。...3、init()初始化函数 在Go 语言程序执行时导入包语句会自动触发包内部init()函数的调用。 需要注意的是:init() 函数没有参数也没有返回值。
进程、线程 计算机的核心是CPU(处理器),它承担了所有的计算任务。它就像一座工厂,时刻在运行。 假定工厂的电力有限,一次只能供给一个车间使用。也就...
介绍 Go是一种过程式编程语言。它由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 于2007年开发,但于2009 年作为开源编程语言推出。...从Go 编程开始 有各种在线 IDE,例如 The Go Playground、repl.it 等,无需安装即可运行 Go 程序。 ...为什么“Go语言”是这样的? 因为 Go 语言致力于将解释型动态类型语言的编程易用性与静态类型编译语言的效率和安全性相结合。它还旨在实现现代化,支持网络和多核计算。 ...由于这个原因,我们使用有限的处理器,并且使用有限的处理器,我们有一种繁重的编程语言,其线程占用更多的内存并降低了我们系统的性能。...使用这种编程语言分发的包非常有用,但 Go 在传统意义上并不是那么面向对象。 缺少一些库,尤其是 UI 工具包。
运算符 同其他语言一样go也有 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符 这几类,作用也是一致的,这里就不过多赘述了。...fmt.Println("A") case "B" : fmt.Println("B") default : fmt.Println("default") } /** 这里需要注意一点,go...在看select前先看一下channel,go建议使用通信的方式代替共享内存,通信的就是指的channel。 大体如下图所示 ?...循环结构 Go 中循环结构就只有一个for循环,语法和其他语言一致,仅仅是for-each的语法结构不太一样而已。...** 语法 **/ for init; condition; post { } /** demo **/ for i:=1; i<10; i++ { fmt.Println(i) } /** go
函数的返回值 可以一次返回多个返回值,Go 语言中如果是单返回值,可以直接在函数声明的括号后面增加数据类型。...("a + b = ", sum) fmt.Println("a * b = ", product) } a + b = 3 a * b = 2 defer 的逆序执行 defer 关键字就是 Go...语言中延迟语句的标志,defer 会在函数即将结束的时候执行,而且是按照 defer 的顺序逆序执行。
在函数的参数类型前加上...就可以用于接收不定长度的该类型的变参,如果连类型也无法确定,则使用...interface{}。
通道可以理解为一种特殊的变量,一般用于线程之间的数据传输。声明之后并不能直接使用,需要使用内置函数 make() 来创建一下通道变量才可以使用。
value值--- value:橘子 value:香蕉 value:苹果 无法通过range输出的值来修改遍历的对象,因为range相当于声明了两个变量,这两个变量逐一复制了遍历对象中的值,归根结底还是因为 Go...语言只有值传递,没有引用传递。
Int不定长类型 package main import ( "fmt" "math" ) func main() { var num int nu...
如果在匿名函数内,使用了外部环境的变量,就构成了一个闭包。简单来讲就是一个函数内,使用匿名函数来操作函数内声明的变量。
strP的地址为 0xc000118220 指针strP指向的值为 How are you 变量str的地址为 0xc000118220 变量str的值为 How are you 指针作为函数的参数 Go...语言中只有值传递,没有引用传递,想要指针作为参数传入函数中,只能传递地址进入函数进行修改 package main import "fmt" func swap(a, b *int) { *a,...只要这两个部分相等,则 Go 语言中的两个数组就是相等的 package main import "fmt" func main() { var a [2]int var c = [2]int{
文件打开之后,就可以从得到的文件对象中读取文件内容。我们在 a.txt 文件中输入 file test 字符串,来验证读取结果。
Go 语言中的 nil nil 是特殊的零值 任何一个变量在声明之后会自动被赋予一个零值。数值类型的变量零值为0,字符串为"",而指针、切片、map、通道、函数和接口的零值就是nil。...string(nil) 指针:(\*int)(nil) 通道:(chan int)(nil) 切片:[]int(nil) 函数:(func())(nil) 接口: nil 标识符无法比较 Go...语言中 nil 和 nil 之间是无法比较的。...package main import "fmt" func main() { fmt.Println(nil == nil) } # command-line-arguments ./2.go
在切片中可以使用len()获取切片中元素的数量,也就是切片的长度。使用cap()可以获取切片引用的数组的长度,也就切片的容量
领取专属 10元无门槛券
手把手带您无忧上云