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

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

Go语言环境搭建



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

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

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



测试是否安装成功



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)


交换两个变量



Go
复制代码
1
    var c1,c2 = 2,10
2
    c1,c2 = c2,c1  //10,2
3
    fmt.Println(c1,c2)


空白标识符_



Go
复制代码
1
    _,c2 = 10,2
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
  }
相关文章
|
6月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
330 4
|
6月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
302 3
|
6月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
336 2
|
8月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
541 0
|
8月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
366 0
|
8月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
419 0
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
存储 缓存 安全
Go 语言中的 Sync.Map 详解:并发安全的 Map 实现
`sync.Map` 是 Go 语言中用于并发安全操作的 Map 实现,适用于读多写少的场景。它通过两个底层 Map(`read` 和 `dirty`)实现读写分离,提供高效的读性能。主要方法包括 `Store`、`Load`、`Delete` 等。在大量写入时性能可能下降,需谨慎选择使用场景。
|
存储 负载均衡 监控
如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
在数字化时代,构建高可靠性服务架构至关重要。本文探讨了如何利用Go语言的高效性、并发支持、简洁性和跨平台性等优势,通过合理设计架构、实现负载均衡、构建容错机制、建立监控体系、优化数据存储及实施服务治理等步骤,打造稳定可靠的服务架构。
438 1
|
Go 调度 开发者
探索Go语言中的并发模式:goroutine与channel
在本文中,我们将深入探讨Go语言中的核心并发特性——goroutine和channel。不同于传统的并发模型,Go语言的并发机制以其简洁性和高效性著称。本文将通过实际代码示例,展示如何利用goroutine实现轻量级的并发执行,以及如何通过channel安全地在goroutine之间传递数据。摘要部分将概述这些概念,并提示读者本文将提供哪些具体的技术洞见。

推荐镜像

更多