• Go语言笔记


    万物之始,大道至简,演化至繁,一切复杂的软件都是由基本的程序排列组合来的。

    第一章 基础知识

    1.1 Go语言简介

    Go语言主要是为了解决当前其他编程语言对并发支持不友好、编译速度慢、编程复杂的问题而诞生的,因为是后来设计的,比目前主流的编程语言历史都短,因此也借鉴了其他编程语言的优秀经验,同时也避免了很多缺点。

    1.2 第一个Go程序

    基本上每个语言第一个程序都是hello world,Go语言的hello world如下

    例1.1 hello world

    1. package main
    2. import "fmt"
    3. func main() {
    4. fmt.Println("hello world")
    5. }

    结果:

    hello world

    Hello world程序解读:

            第一行package main定义了一个包,包名是main,main是可执行程序的包名,所有的Go程序文件头部必须有一个包声明语句,Go通过包来管理命名空间

            第3行import "fmt" 表示引用一个外部包fmt,这里可以引用标准库的包,也可以是第三方包或者自定义的包

            第5行使用func关键字声明定义了一个函数,函数名为main,main代表Go程序入口函数

    Go代码的特征:

            源程序以.go为后缀

            默认为UTF-8编码

            标识符区分大小写

            语句结尾的分号可以省略,也可以加(这点感觉设计的不好,不应该提供两种选择让用户选择,直接规定一种格式更好,让用户选择反而会导致代码风格不同)

            main函数所在的包名必须是main

            编译运行

    go编译命令为go build xxxx.go,运行命令为./xxxx,如下例所示:

    1. //go build test2.go 为编译命令
    2. bytedance@C02D31DRML85 awesomeProject12 % go build test2.go
    3. //./test2 为运行命令
    4. bytedance@C02D31DRML85 awesomeProject12 % ./test2
    5. hello world

    1.3 词法单元

    1. 这块和其他编程语言基本类似,go的标识符也是必须以字母或下划线开头,后面可以跟任意个字符、数字、下划线,且区分大小写

    1. Go有25个关键字,相比Java少了很多,在定义变量/常量等的时候,要避开关键字,否则会出问题

    1. Go的操作符和其他编程语言也大同小异,基本都是算术运算符、位运算符、赋值运算符、比较运算符、逻辑运算符那些

    1.4 变量和常量

    高级语言通过一个标识符来绑定一块特定的内存,后续对这块特定的内存的操作都可以使用该标识符来代替,这类绑定了某个存储单元的标识符可分为变量和常量,变量表示指向的内存可以被修改,而常量表示指向的内存不能被修改。

    1.4.1 变量

    Go的基本类型变量声明有三种方式,如下例所示:

    例1.1 变量的声明方式

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main() {
    6. var a = 4 //变量声明方式1
    7. var b int = 5 //变量声明方式2
    8. c := 6 //变量声明方式3,Go编译器会自动进行数据类型推断
    9. fmt.Println("a = ", a)
    10. fmt.Println("b = ", b)
    11. fmt.Println("c = ", c)
    12. }

    Go语言提供自动内存管理,通常情况下程序员不需要特别关注变量的生存期和存放位置

    例1.2 同时声明多个变量

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main(){
    6. var (
    7. a string
    8. b int
    9. c bool
    10. )
    11. a = "adb"
    12. b = 124
    13. c = true
    14. fmt.Println("a = ",a)
    15. fmt.Println("b = ",b)
    16. fmt.Println("c = ",c)
    17. }

    1.4.2 常量

    常量使用一个名称来绑定一块内存地址,该地址里存放的内容不可以改变,使用关键字const来声明常量,如下例所示:

    例1.3

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main(){
    6. const (
    7. a = 23
    8. b = 23332
    9. c = "233"
    10. )
    11. fmt.Println("a = ",a)
    12. fmt.Println("b = ",b)
    13. fmt.Println("c = ",c)
    14. }

    iota关键字:

    iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

    iota 可以被用作枚举

  • 相关阅读:
    JDK21更新内容:增强模式匹配
    倒计时1天 | 图技术如何赋能产业互联网创新?
    Python 套接字编程完整指南
    PDF编辑工具Acrobat Pro DC 2023中文
    Mysql面试笔记汇总——索引结构基础篇
    CoreData + CloudKit 在初始化 Schema 时报错 A Core Data error occurred 的解决
    解决安装apex报错:No module named ‘packaging‘
    Linux centos7配置JDK环境
    Session 和 Cookie 使用
    Labelme环境搭建,对视频进行标注
  • 原文地址:https://blog.csdn.net/qq_55880012/article/details/127918484