
golang
程序员森爷
学无止境
展开
-
go 并发编程
并发编程就是可以让你的程序不是顺序执行的,而是可以多个分支同时进行,在go中,这个分支也被称为协程goroutine(轻量级线程)。Go语言中使用goroutine非常简单,只需要在调用函数的时候在前面加上go关键字,就可以为一个函数创建一个goroutine。一个goroutine必定对应一个函数,可以创建多个goroutine去执行相同的函数。在程序启动时,Go程序就会为main()函数创建一个默认的goroutine。main函数结束,所有的goroutine都会结束。package原创 2022-02-28 00:36:51 · 1114 阅读 · 0 评论 -
go 继承
Go语言中,通过在结构体内置匿名的成员来实现继承。package maintype People struct { name string age int}func (people People) speak() { println("I am a people") fmt.Printf("%T\n", people)//main.People}type Student struct { People grade int}func main() { var原创 2022-02-27 12:16:35 · 2225 阅读 · 0 评论 -
go 方法
方法定义:专门给某一类型定义的函数。我们可以给任何自定义类型添加一个或多个方法,每种类型对应的方法必须和类型定义在同一个包中。因此是无法给int这类内置类型添加方法的。所有给定类型的方法属于该类型的方法集。方法用法如下:package mainimport "fmt"type Student struct { name string age int grade int}// 给Student类型定义study方法func (stu Student) study (book原创 2022-02-27 11:42:05 · 158 阅读 · 0 评论 -
go语言需要注意的点
要明白Go语言中指针不再是固定不变的(因此不能随意将指针保存到数值变量中) 下面的代码在go中可以运行 func f(x int) *int{ return &x}var x = 8var xNum = f(x)fmt.Println(*xNum) //8 因为Go语言会保证指针指向的变量在合适的地方。Go程序员不用关心栈和堆的问题,编译器和运行时会帮我们搞定。 不要假设变量在内存中的位置是固定不变的,指针随时可能变化,特别是在你不期望它变化的时候。 ...原创 2022-02-26 23:14:34 · 471 阅读 · 0 评论 -
go 函数
在Go语言中,函数是第一类对象,可以将函数保存到变量中。函数用法如下:package mainimport "fmt"//具名函数func Add(a, b int) (sum int) { sum = a + b return}//匿名函数var Reduce = func (a, b int) int { return a - b}//可变参数func Sum(a int, more ...int) int { sum := a for _,v := range原创 2022-02-26 22:47:32 · 304 阅读 · 0 评论 -
go 切片
简单地说,切片就相当于一种简化版的动态数组。结构定义如下:type SliceHeader struct { Data uintptr //执行底层数组的指针 Len int //切片当前长度 Cap int //切片容量}跟字符串比较就是多了一个容量Cap字段,它表示的是切片指向的内存空间的最大容量(对应元素个数而不是字节数),len也是指元素个数。切片用法如下:package mainimport "fmt"func main() { //切片定义 var (原创 2022-02-26 18:41:25 · 532 阅读 · 0 评论 -
go字符串
一个字符串是一个不可改变的字节序列,字符串的元素不可修改(元素不可更改,字符串变量可以重新赋值),是一个只读的字节数组。所以字符串的长度是固定的,但是跟数组不一样,字符串长度不是字符串类型的一部分。go字符串底层结构如下:type StringHeader struct { Data uintptr //指向字节数组的指针 Len int //字节数组长度}字符串变量相当于一个结构体,所以字符串的赋值不会涉及到字节数组的复制。字符串用法如下:package main原创 2022-02-26 16:37:59 · 780 阅读 · 0 评论 -
GO 接口详解
在go语言中,接口是一种就是一种类型。同map、struct等的定义,语法是一样。如:type People interface { Speak(string) string}关键字是interface。此时就称People是一个接口。接口的作用就是定义一些对象的共同特征,特征以接口内的方法来定义。如上例的speak方法。具有上述特征的类型,那就称它实现了这个接口。语法如下:// 定义类型Student,它是一种struct类型 type Student struct{}原创 2022-02-25 16:09:34 · 2598 阅读 · 0 评论 -
go 数组
数组是一个由固定长度的特定类型元素组成的序列,元素个数可以是多个或者0个。0个就是空数组,空数组不占用内存(用的场景如通道的同步操作,避免分配额外的内存)。长度不同或者元素类型不同的数组都是不同的类型,长度是数组类型的一部分。数组用法如下例子:package mainimport "fmt"func main() { var a [3]int var b = [...]int{1, 2, 3} var c = [...]int{1:2, 2:3} var d = [...]int{1原创 2022-02-25 23:53:14 · 1214 阅读 · 0 评论