Golang学习笔记

server/2024/9/22 17:42:02/

Go 语言学习笔记

1. 引言

Go 语言是由 Google 开发的一种静态类型、编译型的系统编程语言。它以简洁、高效和易于理解著称,并且支持并发编程。

2. 安装与环境配置

2.1 安装 Go

  • 访问 Go 官方网站 下载适合你操作系统的安装包。
  • 安装完成后,设置 GOPATHGOROOT 环境变量:
    • GOROOT 是 Go 的安装路径。
    • GOPATH 用于指定 Go 工作空间的位置,默认情况下可以忽略,使用 Go 1.8 之后的版本管理机制 go modules

2.2 验证安装

  • 打开终端或命令行工具,运行以下命令来检查 Go 版本:
    go version
    

3. 基础语法

3.1 变量声明

  • 使用 var 关键字声明变量:
    var x int = 10
    
  • 使用简短声明 :=
    y := "Hello, World!"
    

3.2 函数定义

  • 函数使用 func 关键字定义:
    func add(a int, b int) int {return a + b
    }
    

3.3 控制流语句

  • if 语句:

    if x > 0 {fmt.Println("Positive")
    } else {fmt.Println("Negative or Zero")
    }
    
  • for 循环:

    for i := 0; i < 5; i++ {fmt.Println(i)
    }
    

4. 核心特性

4.1 并发编程

  • 使用 goroutines 实现轻量级线程:

    go func() {fmt.Println("Hello from goroutine")
    }()
    
  • 使用 channels 进行 goroutine 之间的通信:

    ch := make(chan string)
    go func() {ch <- "Hello from channel"
    }()
    fmt.Println(<-ch)
    

4.2 接口

  • 接口定义行为:

    type Speaker interface {Speak() string
    }
    
  • 实现接口:

    type Dog struct{}
    func (d Dog) Speak() string {return "Woof!"
    }
    

5. 工具与实践

5.1 包管理

  • 使用 go mod 初始化模块:

    go mod init example.com/myproject
    
  • 添加依赖:

    go get github.com/some/package
    

5.2 测试

  • 编写测试文件(如 mypackage_test.go):

    package mypackage_testimport ("testing""example.com/mypackage"
    )func TestAdd(t *testing.T) {result := mypackage.Add(2, 3)if result != 5 {t.Errorf("Expected 5, got %d", result)}
    }
    
  • 运行测试:

    go test
    

5.3 性能分析

  • 使用 pprof 分析性能瓶颈:
    go tool pprof http://localhost:6060/debug/pprof/profile
    

6. 结论

Go 语言提供了一种简单而强大的方式来构建高性能的应用程序。
我要开始学Golang了



http://www.ppmy.cn/server/99314.html

相关文章

【Git】VS Code 中文件右侧字母(A M U)含义

VS Code项目关联git后&#xff0c;常常会出现如下标识 其中 M Modified 已经在仓库中添加过该文件&#xff0c;然后你对这个文件进行了修改&#xff0c;就会文件后标记M U Untracked 本地新建了这个文件&#xff0c;还未提交到仓库上&#xff0c;就会标记U D Delete 本…

mvcc底层实现原理知道吗

MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种在数据库系统中用于实现并发控制的技术&#xff0c;它允许多个事务并发地读取和修改数据&#xff0c;而不会发生数据冲突或不一致的问题。MVCC 的核心思想是保存数据的多个版本…

基于SpringBoot的社交平台的设计与实现 java 视频播放

目录 一.开发目的 二.系统功能分析 三.系统角色分析 四.数据库设计图 五.效果与代码展示 六.留言 一.开发目的 互联网数据信息化时代&#xff0c;人们逐渐地改变了以往的社交模式&#xff0c;向大数据信息化时代变迁。现在的用户更多的需要个人的实名制和个人身份审核&a…

学单片机怎么在3-5个月内找到工作?

每个初学者&#xff0c;都如履薄冰&#xff0c;10几年前&#xff0c;我自学单片机时&#xff0c;也一样。 想通过学习&#xff0c;找一份体面点的工作&#xff0c;又害怕辛辛苦苦学出来&#xff0c;找不到工作。 好在&#xff0c;当初执行力&#xff0c;还算可以&#xff0c;自…

Python | Leetcode Python题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution:def isValidSerialization(self, preorder: str) -> bool:pre 1for i in preorder.split(,):if i.isdigit():if pre 0:return Falsepre 1else:if pre 0:return Falsepre - 1return pre 0

解决数据库运行报错[ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘(已解决)

今天在使用navicate Premium运行sql文件时出现如下错误&#xff1a; 错误&#xff1a;1273 - Unknown collation: utf8mb4_0900_ai_ci 报错原因&#xff1a; 生成转储文件&#xff08;也就是sql文件&#xff09;的数据库版本为8.0,而要运行sql文件的数据库版本为5.6,因为是高版…

【数据结构】排序 —— 归并排序(mergeSort)、计数排序、基数排序

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构、LeetCode专栏 &#x1f4da;本系…