Golang语言学习笔记(打卡✏️第一天)|Go主题月

简介: Golang语言学习笔记

Go语言环境搭建



Go 语言支持以下系统Linux,FreeBSD,Mac OS,Windows。

Go官方安装包地址:https://golang.org/dl/

Google安装包地址:https://golang.google.cn/dl/


1.JPG


测试是否安装成功



E:\Go>go version

go version go1.16.2 windows/amd64


Go项目的组成部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释


新建test.go,切换到文件目录,执行go run test.go


运行test.go文件

package main
import "fmt
// 1.引入fmt包(实现了格式化 IO(输入/输出))
func main() {
/* 
1.func main 是程序开始执行的函数。
2.如果有init() 函数则会先执行该函数
*/
   fmt.Println("Hello, World!")
}

1.package main 定义了包名。

2.在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。

3.package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。


生成生成二进制文件



go build test.go


格式化字符串 fmt.Sprintf



Go 语言中使用 fmt.Sprintf 格式化字符串并赋值给新串


package main
import "fmt"
func main(){
    // %d 表示整型数字,%s 表示字符串
    var code=11
    var date="2020-12-31"
    var url="code=%d&date=%s"
    var target=fmt.Sprintf(url,code,date)
    fmt.Println(target)
}
//code=11&date=2020-12-31


数据类型



布尔型 :true 或者 false。

数字类型:整型 int 和浮点型 float32、float64。

字符串类型:字符串就是一串固定长度的字符连接起来的字符序列。

派生类型:

  • (a) 指针类型(Pointer)
  • (b) 数组类型
  • (c) 结构化类型(struct)
  • (d) Channel 类型
  • (e) 函数类型
  • (f) 切片类型
  • (g) 接口类型(interface)
  • (h) Map 类型


//布尔型
    var a bool = true
    fmt.Println(a)
    //数字类型:
    var b int = 1
    fmt.Println(b)
    //字符串类型:
    var c string = "躲躲"
    fmt.Println(c)
    //nli类型 nil的意思是无,或者是零值。
    //nil是预定义的标识符,代表指针、通道、函数、接口、映射或切片的零值,也就是预定义好的一个变量
    var a1 *int;
    var a2 []int;
    var a3 map[string] int;
    var a4 chan int;
    var a5 func(string) int;
    var a6 error; // error 是接口
    fmt.Println(a1,a2,a3,a4,a5,a6)
    //省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误
    //var value int
    //value:='132' //报错  syntax error: unexpected :=, expecting }
    /*
    value1 :=21 //不会报错
    fmt.Println(value1)


多变量声明



var b1,b2,b3 = 1,2,3
    fmt.Println(b1,b2,b3)
    b4,b5,b6 :=4,5,6 //不应该是已经声明的,否则会报错
    fmt.Println(b4,b5,b6)


声明全局变量




var (
        b7 int
        b8 int
        b9 int
    )
    fmt.Println(b7,b8,b9)


交换两个变量



var c1,c2 = 2,10
    c1,c2 = c2,c1  //10,2
    fmt.Println(c1,c2)


空白标识符_



_,c2 = 10,2
    fmt.Println(c2)


语言常量



常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。


const identifier [type] = value
//显式类型定义
    const d1 string = "123"
    //隐式类型定义
    const d2 = "1234"
多个相同的类型可以定义为:
//多个相同的类型可以定义为:
    const name1,name2 = "詹","躲躲"
    fmt.Println(d1,d2,name1,name2) //123 1234 詹 躲躲


常量应用



const WIDTH,HEIGHT = 10,20
    var area int
    area = WIDTH*HEIGHT
    fmt.Printf("面积为: %d",area) //面积为:200


常量枚举



const (
        Unknown = 0
        Female = 1
        Male = 2
    )
    fmt.Println(Unknown,Female,Male)


内置函数  len(), cap(), unsafe.Sizeof()函数



const (
        az = "abc"
        bz = len(az)
        cz = unsafe.Sizeof(a)
    )
    fmt.Println(a,b,c)


iota,特殊常量



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


const (
        f1 = iota //计数 iota+=1  --->0
        f2        //计数 iota+=1  --->1
        f3 = iota //计数 iota+=1  --->2
        f4 = "12" //独立值  --->12
        f5 = true //独立值  --->true
        f6 = 100  //独立值  --->100
        f7 = iota  //计数 iota+=1  --->6
    )
    fmt.Println(f1,f2,f3,f4,f5,f6,f7) //0 1 2 12 true 100 6


算术运算符



var g1,g2 = 10,20
    //加法
    fmt.Println(g1+g2) //30
    //减法
    fmt.Println(g1-g2) //-10
    //乘法
    fmt.Println(g1*g2) //200
    //除法
    fmt.Println(g1 / g2) //0
    //求余
    fmt.Println(g1%2) //0
    //自增
    g1++
    fmt.Println( g1 ) //11
    //自减
    g1--
    fmt.Println( g1 ) //10


关系运算符



 

fmt.Println(123==23) //false
    fmt.Println(123>23) //true
    fmt.Println(123<23) //false
    fmt.Println(123!=23) //true


逻辑运算符



var h1 bool = true
    var h2 bool = false
    fmt.Println((h1 && h2)) //false
    fmt.Println((h1 || h2)) //true
    fmt.Println(!(h1 && h2)) //true


运算符优先级



/*
    优先级     运算符
    5     * / % << >> & &^
    4     + - | ^
    3     == != < <= > >=
    2     &&
    1     ||
    */


条件判断



var i = 2
    if i>1 {
        fmt.Println("返回真")
    }else{
        fmt.Println("返回假")
    }


switch语句



var grade string = "A"
    var score int = 90
    switch score {
        case 90: grade ="A"
        case 80: grade ="B"
        case 70: grade ="C"
        case 60: grade ="D"
        default: grade ="D-"    
    }
    switch grade {
        case "A": 
        fmt.Println("你的成绩为:优秀")
        case "B": 
        fmt.Println("你的成绩为:良好")
        case "C": 
        fmt.Println("你的成绩为:良好")
        case "D":
        fmt.Println("你的成绩为:及格")
        default: 
        fmt.Println("你的成绩为:不及格")    
    }
    //你的成绩为:优秀
    //fallthrough
    var j bool = true
        switch j{
        case true: 
        fmt.Println(true) //true
        fallthrough
        case false: 
        fmt.Println(false) //false
        fallthrough
        case true: 
        fmt.Println(true) //true
        fallthrough
        default:
        fmt.Println(false)    //false
    }
相关文章
|
22天前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
77 1
|
3月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
261 1
|
9月前
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
9月前
|
运维 监控 算法
监控局域网其他电脑:Go 语言迪杰斯特拉算法的高效应用
在信息化时代,监控局域网成为网络管理与安全防护的关键需求。本文探讨了迪杰斯特拉(Dijkstra)算法在监控局域网中的应用,通过计算最短路径优化数据传输和故障检测。文中提供了使用Go语言实现的代码例程,展示了如何高效地进行网络监控,确保局域网的稳定运行和数据安全。迪杰斯特拉算法能减少传输延迟和带宽消耗,及时发现并处理网络故障,适用于复杂网络环境下的管理和维护。
|
3月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
314 0
|
3月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
209 0
|
3月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
175 0
|
3月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
270 0
|
3月前
|
数据采集 Go API
Go语言实战案例:多协程并发下载网页内容
本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,讲解如何使用 Goroutine 和 Channel 实现多协程并发抓取网页内容,提升网络请求效率。通过实战掌握高并发编程技巧,构建爬虫、内容聚合器等工具,涵盖 WaitGroup、超时控制、错误处理等核心知识点。
|
3月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。

热门文章

最新文章

推荐镜像

更多
下一篇
开通oss服务