Java学渣学习go的第一篇笔记 | 青训营笔记
前言
从 Java 的角度来看,Go语言是一门高性能、高并发、语法简洁的静态强类型语言。与Java不同的是,Go不是基于虚拟机的语言,它可以直接将目标代码静态链接并编译到目标平台,从而实现跨平台。此外,Go还具有丰富的标准库和完善的工具链,支持快速编译和垃圾回收。
学习Go的第一个程序
要开始学习Go语言,你需要安装Go开发环境并选择一个适合你的IDE,比如VSCode或GoLand。安装完成后,你可以从基础语法开始学习,比如下面的HelloWorld
import (
"fmt"
)
func main(){
fmt.Println("hello world")
}
复制代码
不同的变量声明
var a int = 1
与Java相比,go语言的变量声明需要类型后置,而不是放在变量名的前面
var b,c int = 1, 2
也可以同时声明多个变量
var d = false
可以不输入变量类型,go可以自动判断变量类型
var e float64 // got 0
如果我们未对一个变量初始化,那么go会自动初始化
f := 3.2 // 等价于 var f = 3.2
go语言支持变量简单声明,仅使用一个:=符号就可以完成变量的声明
const h string = "constant"
可以使用 const 关键字代替 var 关键字来创建一个常量(不可变变量)
类似的控制流程语句
Go的基本语法与Java相似,例如处理流程控制语句的if语句和switch语句。在Go中,if语句中的括号是可选的,推荐不使用括号。switch语句也与Java类似,可以使用fallthrough关键字来实现一个case穿透到下一个case。
强大的循环支持
Go也支持for循环,可以使用for关键字加上条件进行循环,也可以将其视为while循环。此外,Go还支持for range语句,可以用来遍历数组、切片和映射。
for {
fmt.Println("loop")
break
}
复制代码
灵活的数组和切片
在Go中,数组是定长的,而切片是可变容量的,类似于Java中的ArrayList。可以使用make函数声明一个切片,并可以使用append函数动态添加元素。Go还支持使用索引号和切片操作来访问和截取数组和切片中的元素。
s := make([]string, 3)
复制代码
键值对集合
映射(Map)是Go中的一种键值对集合,类似于Java中的Map。可以使用make函数声明和初始化一个映射,并可以使用键来访问和修改值。
m := make(map[string]int)
复制代码
函数和指针操作
在Go中,函数是一等公民,可以像Java中的方法一样进行声明和调用。Go也支持指针操作,通过使用 *type 声明一个指针变量并使用*对一个变量进行解引用。
自定义数据类型
在Go中,没有类的概念,但可以使用结构体(Struct)来创建自定义的数据类型。可以在结构体中定义字段和方法,并使用点语法来访问它们。
type user struct {
name string
password string
}
复制代码
错误处理的重要性
错误处理是Go中的一项重要的特性,与Java不同,Go通过返回错误对象来表示方法执行中是否发生了错误。
u, err := findUser([]user{{"wang", "1024"}}, "wang")
if err != nil {
fmt.Println(err)
return
}
复制代码
强大的标准库支持
Go拥有强大的标准库,支持字符串处理、日期和时间处理、JSON解析等常用功能。通过学习和使用标准库,你可以更高效地编写Go程序。
总结
总而言之,依本Java学渣和前人的经验来看,学习Go语言需要掌握其基本语法,了解并适应其与Java的一些差异,尤其是错误处理和数据结构等方面。随着不断的学习和实践,你将能够在Go语言中构建高效、高性能的应用程序。
引用
该笔记素材源自: 后端 - 字节内部课 (juejin.cn)