golang 学习笔记
golang 简介
静态 强类型 编译型语言
GO语言适用场景及GO语言的优势 Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说: 我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。
Go是谷歌2009发布的第二款编程语言。该奖项授予在2009年市场份额增长最多的编程语言。 谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大。
HelloWorld
package mainimport "fmt"func main() {fmt.Println("Hello, 世界")
}
复制代码
变量 常量
var age int =10
var age =10
age := 2018
const age int = 10
const age= 10
复制代码
公有变量/函数 私有变量/函数
大些字母开头的变量或者函数等是public的,可以被其他包访问;小些的则是private的,不能被其他包访问到。这样就省去了public和private声明的烦恼,使代码变的更简洁。
map
map类型,Java里是Map接口,go里叫做字典
ages := make(map[string]int)ages["weimin"] = 20ages["brother"] = 30fmt.Print(ages["michael"])
//删除
delete(ages,"michael")
复制代码
函数方法
package mainimport "time"type Person struct {age intname string
}func (p Person) GetName() string {return p.name
}func GetTime() time.Time{return time.Now()
}
复制代码
包名调用称之为函数 创建对象实例调用称之为方法
多返回值
func backValue() (string, int, error) {return "helloWorld", 100, nil
}
str,value:=backValue()
str,_:=backValue()
复制代码
指针
Go的指针和C中的声明定义是一样的,其作用类似于Java引用变量效果。var age int = 10var p *int = &age*p = 11fmt.Println(age) // age=11
复制代码
结构体
package mainimport ("fmt"
)type Person struct {age intname stringAddress // 组合
}type Address struct {city string
}func (p Person) GetName() string {return p.name
}func (p Person) GetAge() int {return p.age
}//值拷贝,不改变原来的User对象值
func valueDeliver(person Person) {person.name = "值拷贝"person.age = 12fmt.Println("person :", person)
}
func pointerDeliver(person *Person) {person.name = "指针"person.age = 12fmt.Println("person :", person)
}func main() {person := Person{}valueDeliver(person)pointerDeliver(&person)//person : {12 值拷贝 {}}//person : &{12 指针 {}}
}复制代码
接口
Go的接口和Java类型,不过它不需要强制实现,在Go中,如果你这个类型(基本类型,结构体等都可以)拥有了接口的所有方法,那么就默认为这个类型实现了这个接口,是隐式的,不需要和java一样,强制使用implement强制实现。
package main
import ("fmt""strconv"
)
type Stringer interface {String() string
}
type User struct {age intname string
}
func (p User) String() string {return "name is " + p.name + ",age is " + strconv.Itoa(p.age)
}
func main() {var str Stringeruser := &User{}user.age = 10user.name = "hello"str = userfmt.Println(str)
}
复制代码
并发
- go run() go 关键字 开启一个协程 (轻量级线程)
- 协程通信(类似java selector channel 机制)
- 同步(sync,sync.WaitGroup)
package mainimport "fmt"
//协程通信
exit := make(chan struct{})go func() {time.Sleep(time.Second * 3)println("chan1 chan goroutine end")defer close(exit) //关闭通道}()println("main start...")<-exit
//main start...
//chan1 chan goroutine end
//main end...//同步
var rw sync.RWMutex
func (p *Person) updateToken(name string) {rw.Lock()defer rw.Unlock()// updateToken
}
复制代码
异常机制
go内置的error类型非常简洁,只用实现Error方法即可,可以打印一些详细的错误信息,比如常见的函数多值返回,最后一个返回值经常是error,用于传递一些错误问题,这种方式要比java throw Exception的方法更优雅。
Defer代替finally go中没有java的finally了,那么如果我们要关闭一些一些连接,文件流等怎么办呢,为此go为我们提供了defer关键字,这样就可以保证永远被执行到,也就不怕关闭不了连接了。
f,err:=os.Open(filename)
defer f.Close()
复制代码
golang 应用
- 七牛云
- docker
- 抖音
- 比特币
GoLang 相关
官网 学习书籍 Go Web 编程 how to write go go example golang mac 安装
转载于:https://juejin.im/post/5c9a50b66fb9a070e62d88e2
golang 学习笔记相关推荐
- golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题
golang学习笔记12 beego table name `xxx` repeat register, must be unique 错误问题 今天测试了重新建一个项目生成新的表,然后复制到旧的项目 ...
- golang学习笔记(五):数组的定义和使用
golang 学习笔记 数组定义 数组是一系列相同数据类型在内存中有序存储的数据集合 var 数组名 [元素个数]数据类型//定义了10个整型变量的数组元素var arr [10]int//通过下标找 ...
- golang学习笔记(十六):多态的实现
golang 学习笔记 多态实现 package main import "fmt"//先定义接口 在根据接口实现功能 type Humaner1 interface {//方法 ...
- golang学习笔记-1
golang学习笔记-1 自学golang时,找到一篇学习资料http://golang.iswbm.com/en/latest/c01/c01_08.html 初看上面两种写法,不明就里,哪里高级了 ...
- golang学习笔记(基础篇)
LCY~~Golang学习笔记 一.Go语言开发环境 ##安装Go开发包以及VsCode Go开发包与vscode配置安装教程网址:https://www.liwenzhou.com/posts/Go ...
- Golang学习笔记之GORM基础使用(二)
本文章主要学习GORM的增删查改.若还没有完成数据库和数据表的创建.定义模型以及数据库的连接请先学习本本专栏文章Golang学习笔记之GORM基础使用(一).本文为学习笔记,通过GORM官方中文文档和 ...
- golang学习笔记8 beego参数配置 打包linux命令
golang学习笔记8 beego参数配置 打包linux命令 参数配置 - beego: 简约 & 强大并存的 Go 应用框架 https://beego.me/docs/mvc/contr ...
- 118云原生编程语言Golang学习笔记
Golang学习笔记 文章目录 1.Go简介 1.1 简介 1.2 设计初衷 1.3 Golang vs Java 1.4 应用领域 1.5 用go语言的公司 2.Go下载和安装 2.1 开发工具 2 ...
- golang学习笔记之--Go语言内建容器
话接上文 <golang学习笔记之--Go语言基本语法> 今天继续记录学习笔记,今天的笔记主题是Go语言内建容器 如果各位童鞋想要获得下面的源码,请搜索gzh:隔壁王小猿,关注后回复&qu ...
- Golang学习笔记之GORM基础使用(一)
本文章主要学习了GORM的基础知识,数据库的连接以及数据库表的建立的多种方法.本文为学习笔记,通过GORM官方中文文档和李文周的博客学习整理而成. gorm是一个使用Go语言编写的ORM框架.它文档齐 ...
最新文章
- activeMq 安装
- 新华社北京4月15日电 题:奋斗应提倡,996当退场
- 400 多页的 Java 面试笔记,各个公司面试真题!
- C++编程【Visual Studio 2017 环境搭建教程】【附:软件安装包】
- 混合高斯模型_EM算法求解高斯混合模型(GMM)
- 发布你的程序包到Nuget
- 计算机职称考试知识点,职称计算机考试复习知识点
- 2引擎帮助文档_ANSA快速入门指南中文帮助文档浅析(上)
- PHP字体向右移动,CSS3如何实现文字向右循环闪过效果以及可在移动端使用的实例代码分享...
- 生产者消费者之爸爸妈妈儿子女儿苹果橘子编程实现
- Python3入门机器学习经典算法与应用 第3章 读取数据和简单的数据探索
- FPGA信号处理系列文章——用matlab理解CIC滤波器的原理
- 蘑菇丁周记范文计算机销售40篇,毕业生实习周记及销售实习周记范文 毕业生蘑菇钉周记范文(最新)...
- 微信跳跳代码php执行,微信跳一跳,能够直接运行的脚本
- MacOS 下恢复使用谷歌浏览器翻译功能
- kafka数据同步Elasticsearch深入详解
- 开源企业内部文档共享平台(mm-wiki)
- 向日葵的约定(歌词中日对译)
- html 正方形符号,Html 特殊符号
- SSM框架二手车交易网站源码+论文