go基础笔记

80 阅读3分钟

java于golang

优点:

  1. 高效性:Golang(Go)使用了比Java更简单的语言特性,并使用了更少的CPU和内存。这意味着它能够更快地运行和更好的扩展。
  1. 并发性:Go的并发编程模型使之成为一种多语言编程的强有力的竞争者。通过使用轻量级Goroutine,Go能够在极短的时间内开启成百上千个并发任务。
  1. 内存管理:Go有一个内置的垃圾回收器,使得开发者无需关心内存分配和回收。
  1. 数组:Go中的数组是一个基本类型,而不是对象,这意味着它们可以被无缝地优化和并行化。
  1. 面向对象编程:与其他语言不同,Go通过“组合”而不是“继承”来实现面向对象编程。这种方法允许开发者在不削弱代码的可读性和可扩展性的同时更好地控制复杂性。

缺点:

  1. 生态系统:相比于Java和其他主流语言,Go的生态系统还相对较小。虽然这已经得到了改善,但是开发者在大多数情况下可能需要编写自己的库和工具。
  1. 较小的门槛:与Java相比,Go具有较小的学习曲线,这意味着在一个大型项目中找到熟练的开发者可能更加困难。
  1. 缺少泛型:尽管Go的缺少泛型并非致命错误,但它可以造成类型问题的繁琐,以及Java和其他拥有泛型的语言所享有的许多收益的丧失。
  1. 不支持动态性:Go是一种静态类型语言,这意味着它不能轻易地支持动态性。虽然使用反射,代码可以更灵活和可扩展,但这种方式需要更多的开销。

go与java各有各的好处。

创建变量

在golang语言中,使用var关键字声明变量。 声明一个变量的格式:var 变量名 变量类型 = 值,其中变量类型可以是int、float、string等数据类型。

示例代码:

var num1 int = 10
var num2 float64 = 1.23
var str string = "hello world!"
var isOK bool = true

结构体

结构体是golang语言中的一种自定义数据类型,可以由多个不同类型的成员组成。 定义结构体的格式:type 结构体名 struct { 成员名1 数据类型1; 成员名2 数据类型2; …… }

示例代码:

type Student struct {
    name string
    age int
    grade int
}
​
结构体使用示例:
var stu1 Student
stu1.name = "Tom"
stu1.age = 18
stu1.grade = 90
​
fmt.Println(stu1.name)
fmt.Println(stu1.age)
fmt.Println(stu1.grade)

循环

golang语言中有两种循环语句:for和range。

示例代码:
// for循环
for i := 0; i < 3; i++ {
    fmt.Println(i)
}
​
// range循环
arr := []int{1, 2, 3}
for i, v := range arr {
    fmt.Println(i, v)
}

case

golang语言中的switch语句可以使用case匹配不同的条件。

示例代码:

var num int = 5
switch num {
case 1:
    fmt.Println("num is 1")
case 2:
    fmt.Println("num is 2")
default:
    fmt.Println("num is not 1 or 2")

}

json序列化

golang语言中可以使用json包实现json序列化和反序列化操作。

示例代码: // json序列化

type Person struct {
    Name string `json:"name
"`     Age int `json:"age
"` }
​
person := Person{"Tom", 20}
data, _ := json.Marshal(person)
fmt.Println(string(data))
​
// json反序列化
var person2 Person
json.Unmarshal(data, &person2)
fmt.Println(person2.Name)
fmt.Println(person2.Age)