一、Go基础知识0、背景介绍

一、主流编程语言时间线

1、目前主流编程语言都是2000年以前发布:

C语言:1972

C++:1983

Python:1991

Java、Php、Js:1995

Amd双核、web发展:2005

Go:2006

Go语言是在双核之后出现的,所以Go在出生之时就解决了并发的问题(协程)。

2、Go最初目的是替代C++,崇尚C语言的设计理念。

二、Go的优势

1、语法简单——开发效率高

2、集各种语言的优势——大量参考C和Python

3、执行性能高——直接编译成二进制,部署非常简单

4、并发编程非常高效——goroutine

5、编译速度快——比C++、Java编译快

三、Go能做什么

1. Web开发- gin、beego等
2.容器虚拟化 - docker、k8s、istio
3.中间件 -etcd、tidb、influxdb、nsg等
4.区块链 -以太坊、fabric
5.微服务 - go-zero、dapr、 rpcx、 kratos、dubbo-go、 kitex

Go语言在云计算、微服务架构、网络编程等领域非常受欢迎。它的设计哲学是“少即是多”,即通过提供一组小而强大的功能集来实现高效的编程实践。Go的这些特性使其成为现代软件开发,尤其是在需要高性能和高并发的应用程序中的一个强有力的选择。

四、Go语言的主要特点

  1. 静态类型:Go是静态类型的语言,这意味着变量在编译时就已确定其类型,这有助于提前发现错误。

  2. 简洁性:Go的语法简洁,易于学习和阅读。它避免了过度的抽象和复杂的语法规则,使得代码更加清晰。

  3. 并发编程:Go的一个显著特点是其对并发编程的原生支持。它通过goroutines(轻量级线程)和channels(用于goroutines间的通信)简化了并发编程。

  4. 快速编译:Go语言的编译速度非常快,这使得开发过程更加高效。

  5. 内存安全:Go提供了自动垃圾回收功能,减少了内存泄漏的风险。

  6. 标准库:Go拥有一个丰富的标准库,覆盖了网络、并发、加密、数据处理等多个领域。

  7. 工具链:Go提供了强大的工具,如格式化工具gofmt,用于代码格式化,以及其他用于调试和性能分析的工具。

五、Go语言与其他语言的区别

  1. 与C/C++:Go提供了类似C的性能和安全性,但具有更简洁的语法。它避免了C++中常见的复杂特性,如类和继承,同时提供了更现代的并发支持。

  2. 与Java/Python:与这些语言相比,Go通常提供更好的性能,尤其是在并发处理方面。Go的静态类型系统和编译时类型检查也与Java相似,但Go的语法更简洁。

  3. 与JavaScript/Node.js:Go在网络编程和并发处理方面表现出色,是构建高性能服务器端应用的流行选择。与Node.js相比,Go在多核处理和长期运行的后台任务方面通常表现更好。

  4. 与Rust:Rust提供了更高的安全保障,特别是在内存安全方面。Go则侧重于简洁性和高效的并发处理。两者都适用于系统级编程,但Rust在需要严格内存控制的场景中更受欢迎。

  5. 与Ruby/PHP:这些语言主要用于Web开发。Go也可以用于Web开发,并且在性能和并发处理方面通常优于Ruby和PHP。

六、环境配置

windows:超详细go语言环境配置!!!_go环境配置-CSDN博客

mac:mac怎么安装和配置go语言环境-Golang-PHP中文网

linux:Linux系统中如何安装和配置golang环境-linux运维-PHP中文网

三种环境安装以及VSCode配置:Windows/Linux/macOS安装go和vscode,配置go环境 - 知乎

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 变量和常量声明 Go语言中,使用var关键字声明变量,常量使用const关键字声明。 ``` var name string = "Tom" var age int = 18 const pi = 3.14 ``` 2. 数据类型 Go语言中,基本数据类型包括整型、浮点型、布尔型、字符串型等。 ``` var num int = 10 var f float64 = 3.14 var flag bool = true var str string = "hello world" ``` 3. 控制语句 Go语言中,支持if、for、switch等控制语句。 ``` if num > 0 { fmt.Println("positive") } else { fmt.Println("negative") } for i := 0; i < 10; i++ { fmt.Println(i) } switch num { case 1: fmt.Println("one") case 2: fmt.Println("two") default: fmt.Println("others") } ``` 4. 函数 Go语言中,使用func关键字定义函数。 ``` func add(a, b int) int { return a + b } result := add(1, 2) fmt.Println(result) ``` 5. 包和导入 Go语言中,使用package关键字定义包,使用import关键字导入包。 ``` package main import "fmt" func main() { fmt.Println("hello world") } ``` 6. 结构体和方法 Go语言中,使用type关键字定义自定义结构体,可以给结构体定义方法。 ``` type Person struct { name string age int } func (p Person) sayHello() { fmt.Println("hello, my name is", p.name) } p1 := Person{name: "Tom", age: 18} p1.sayHello() ``` 7. 指针 Go语言中,使用&符号获取变量的地址,使用*符号获取指针指向的值。 ``` num := 10 ptr := &num fmt.Println(*ptr) ``` 8. 数组和切片 Go语言中,使用[]定义数组和切片,数组长度固定,切片长度可变。 ``` arr := [3]int{1, 2, 3} slice := []int{1, 2, 3} ``` 9. map Go语言中,使用map关键字定义map。 ``` m := make(map[string]int) m["one"] = 1 m["two"] = 2 fmt.Println(m["one"]) ``` 10. 接口 Go语言中,使用interface关键字定义接口,一个类型只要实现了接口中定义的所有方法,就可以被认为是实现了该接口。 ``` type Shape interface { area() float64 } type Rectangle struct { width float64 height float64 } func (r Rectangle) area() float64 { return r.width * r.height } r := Rectangle{width: 10, height: 5} var s Shape = r fmt.Println(s.area()) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不归Alkaid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值