博客
关于我
【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/

    你可能感兴趣的文章
    Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
    查看>>
    NetApp凭借领先的混合云数据与服务把握数字化转型机遇
    查看>>
    NetBeans IDE8.0需要JDK1.7及以上版本
    查看>>
    netcat的端口转发功能的实现
    查看>>
    netfilter应用场景
    查看>>
    netlink2.6.32内核实现源码
    查看>>
    Netpas:不一样的SD-WAN+ 保障网络通讯品质
    查看>>
    NetScaler的常用配置
    查看>>
    netsh advfirewall
    查看>>
    NETSH WINSOCK RESET这条命令的含义和作用?
    查看>>
    Netty WebSocket客户端
    查看>>
    netty 主要组件+黏包半包+rpc框架+源码透析
    查看>>
    Netty 异步任务调度与异步线程池
    查看>>
    Netty中集成Protobuf实现Java对象数据传递
    查看>>
    Netty事件注册机制深入解析
    查看>>
    Netty原理分析及实战(四)-客户端与服务端双向通信
    查看>>
    Netty客户端断线重连实现及问题思考
    查看>>
    Netty工作笔记0006---NIO的Buffer说明
    查看>>
    Netty工作笔记0007---NIO的三大核心组件关系
    查看>>
    Netty工作笔记0011---Channel应用案例2
    查看>>