博客
关于我
【Go学习】Go(Golang)知识点总结
阅读量:236 次
发布时间:2019-03-01

本文共 2221 字,大约阅读时间需要 7 分钟。

Go语言入门介绍

环境搭建

1. 标准包安装

检查安装成功:在终端输入 go,出现 go 命令列表。

2. 配置环境变量

  • 打开终端,执行 cd ~
  • 查看是否有 .bash_profile 文件:ls -a
    • 如果有,跳过此步骤。
    • 如果没有,执行以下命令创建并编辑文件:
      touch .bash_profileopen -e .bash_profile
  • .bash_profile 中自定义 GOPATHGOBIN
    export GOPATH=/Users/lwh/program/Goexport GOBIN=$GOPATH/binexport PATH=$PATH:$GOBIN
  • 重新加载环境变量:source .bash_profile
  • 3. 安装集成开发工具

    推荐使用 VS Code:

  • 安装 VS Code。
  • 运行 Go 插件:go install github.com/golang/vscode.
  • 配置 VS Code:
    • 打开设置,搜索 Go,启用相关插件。
  • 4. 工作空间

    创建 GOPATH 目录,并在其下创建三个子目录:

    • bin:存放编译后的可执行文件。
    • pkg:存放编译后的包文件。
    • src:存放项目源码。

    基本语法

    1. 常量、变量与命名规则

    1. 可见性规则

    • 函数名首字母小写:表示私有函数。
    • 函数名首字母大写:表示公共函数。

    2. 常量

    • 常量值在运行时不可改变。
    • 内置常量:true, false, iota
    • 定义方式:
      const PI float32 = 3.1415926const a, b, c = 1, "Go", 'c'

    3. 变量

    • 变量值在运行时可改变。
    • 变量名命名规则:
      • 以字母或下划线开头。
      • 由字母、数字、下划线组成。
      • 避免使用关键字。
      • 大小写区分。

    4. 标识符命名规则

    • 变量名首字母小写表示私有变量。
    • 常量名全大写表示常量。

    2. 数据类型

    1. 基本数据类型

    • bool:布尔型。
    • int, uint:整数型。
    • byte, uint8:字节型(ASCII字符)。
    • rune:Unicode字符型(等价于 int32)。
    • float32, float64:浮点数型。
    • complex64, complex128:复数型。

    2. 值类型

    包括:bool, int, float, byte, string, 数组, 结构体, 错误类型

    3. 引用类型

    包括:指针, 切片, 字典, 通道, 接口, 函数

    3. 字符串

    • 字符串内容不可变。
    • 字符串操作:
      str := "hello"fmt.Printf("str[%d] = %v\n", 2, str[2]) // 输出 'l'fmt.Println(len(str)) // 5

    4. 数组

    • 定义方式:
      var arr1 [5] int
    • 初始化方式:
      var arr2 = [2] int {1, 2}

    5. 切片

    • 切片是引用类型,支持动态数组。
    • 定义方式:
      slice1 := make([]int, 4, 10)
    • 常用操作:
      slice1 = array1slice1 = array1[2:5]

    6. 字典

    • 哈希表,键值对存储。
    • 定义方式:
      map1 := make(map[string]int)

    7. 通道

    • 用于消息通信。
    • 声明方式:
      ch := make(chan int)
    • 操作方式:
      ch <- 1value := <-ch

    运算符与表达式

    1. 位运算符

    • ^:取反。
    • &:按位与。
    • |:按位或。
    • <<, >>:位移。

    2. 通道运算符

    • <-:发送和接收数据。

    输入输出

    1. 标准输出

    • fmt.Printffmt.Println
    • 格式化字符串:
      fmt.Printf("str[%d] = %v\n", i, str[i])

    2. 标准输入

    • fmt.Scanfmt.Scanlnfmt.Scanf

    并发程序设计

    1. Goroutine

    • Go语言内置的轻量级线程。
    • 创建方式:
      go func() {  // goroutine代码}()

    2. 通道

    • 用于消息传递。
    • 单向通道:
      ch := make(<-int)
    • 异步通道:
      ch := make(chan int, 1024)

    3. Select语句

    • 多路复用:
      select {  case <-ch1:  case <-ch2:  default:}

    4. 超时机制

    • 使用 time.Timeout 实现。

    结构体

    1. 定义

    type date struct {  year int}

    2. 方法

    func (r *student) getFee() int {  return 10 + 100}

    接口

    1. 定义

    type Speaker interface {  sayHi()}

    2. 接口组合

    type SpeakerLearner interface {  Speaker  study()}

    1. fmt

    • 格式化输入输出。

    2. math

    • 数学函数。

    3. strings

    • 字符串操作。

    4. strconv

    • 数据类型转换。

    5. bytes

    • 字节切片操作。

    6. bufio

    • 缓冲输入输出。

    总结

    Go语言是一种强大且灵活的编程语言,适合处理并发和网络编程任务。通过以上内容,可以快速上手 Go语言并进行开发。

    转载地址:http://ouqt.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0025---SocketChannel API
    查看>>
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0057---Netty群聊系统服务端
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0063---WebSocket长连接开发2
    查看>>
    Netty工作笔记0070---Protobuf使用案例Codec使用
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测机制
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架内的宝藏:ByteBuf
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>