Golang基础语法学习与速成

2024-08-21 22:20

本文主要是介绍Golang基础语法学习与速成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:CSDN-PleaSure乐事

欢迎大家阅读我的博客 希望大家喜欢

目录

1.golang介绍

1.1介绍

1.2优势

2.语法

2.1控制台输出

2.2算术运算符

2.3变量常量

2.4for循环

2.5if语句

2.6switch语句

2.7作用域

2.8浮点数和零值

2.8.1浮点数

2.8.2零值

2.9格式化动词

2.10整数和字符串

2.11字符串字面值和原始字符串

2.12字符

2.13类型别名

2.14常用内置函数

2.14.1range

2.14.2len

2.15环绕行为(溢出)

2.16布尔类型转换

2.17结构体

2.18接口


1.golang介绍

1.1介绍

Go(也称为Golang)是由Google开发的一种静态类型、编译型的编程语言。Go的设计目标是简单、高效、易于学习,并且能够解决现代软件工程中遇到的一些常见问题,如并发编程的复杂性。下图就是经典的有关Go的图:

1.2优势

go具有以下优势:

  1. 并发支持:Go通过goroutines和channels提供了轻量级的并发机制,使得编写并发程序变得简单直观。
  2. 垃圾回收:Go具有自动内存管理功能,这意味着程序员不需要手动管理内存,从而减少了内存泄漏和其他内存相关错误的可能性。
  3. 跨平台编译:Go支持在不同的操作系统和架构上编译程序,使得开发者能够在一台机器上为多平台编译程序。

2.语法

需要注意的是,在进行Go语言的编写前,需要导入相应的包,否则编译可能会失败。

2.1控制台输出

Go语言提供了标准库fmt中的Println, Printf 和 Print 函数来输出文本到标准输出流。

package main
import "fmt"
func main() {fmt.Println("Hello, world!")
}

2.2算术运算符

Go支持基本的算术运算符,如加法 +、减法 -、乘法 *、除法 / 和取模 %。

package main
import "fmt"
func main() {x := 10y := 3fmt.Println("Addition:", x+y)fmt.Println("Subtraction:", x-y)fmt.Println("Multiplication:", x*y)fmt.Println("Division:", x/y)fmt.Println("Modulus:", x%y)
}

2.3变量常量

Go中的变量声明使用 var 关键字,而常量使用 const 关键字。

package main
import "fmt"
func main() {var age int = 25const name string = "Alice"fmt.Println("Name:", name)fmt.Println("Age:", age)
}

2.4for循环

Go支持 for 循环,可以用作无限循环、计数循环或迭代数组/切片等。

package main
import "fmt"
func main() {for i := 0; i < 5; i++ {fmt.Println(i)}
}

2.5if语句

Go中的条件语句使用 if 关键字。

package main
import "fmt"
func main() {x := 10if x > 0 {fmt.Println("x is positive")} else {fmt.Println("x is not positive")}
}

2.6switch语句

Go中的 switch 语句可以用来比较表达式的值或类型。

package main
import "fmt"
func main() {x := 1switch x {case 1:fmt.Println("One")case 2:fmt.Println("Two")default:fmt.Println("Unknown")}
}

2.7作用域

变量的作用域决定了它可以被访问的区域。全局变量在整个程序中可见,局部变量仅在其声明的块中可见。

package main
import "fmt"
func main() {var globalVar int = 10func() {var localVar int = 20fmt.Println("Local variable:", localVar)}()fmt.Println("Global variable:", globalVar)
}

2.8浮点数和零值

2.8.1浮点数

Go中的浮点数有两种类型:float32float64

2.8.2零值

未初始化的变量默认为零值,对于浮点数来说就是 0.0。

package main
import "fmt"func main() {var f float64fmt.Println("Zero value of float64:", f) // 输出 0.0f = 3.14fmt.Printf("Formatted float: %.2f\n", f) // 输出 3.14
}

2.9格式化动词

使用 fmt.Printf 或 fmt.Sprintf 可以格式化输出。

package main
import "fmt"
func main() {f := 3.14159fmt.Printf("Formatted float: %.2f\n", f) // 输出 3.14
}

2.10整数和字符串

Go中的整数类型包括 int, int8, int16, int32, int64 以及无符号整数类型 uint, uint8, uint16, uint32, uint64 和 uintptr。

package main
import "fmt"
func main() {var i int = 10var s string = "Go"fmt.Println("Integer:", i)fmt.Println("String:", s)
}

2.11字符串字面值和原始字符串

字符串字面值可以用双引号或反引号包围,后者可以包含换行符等特殊字符。

package main
import "fmt"
func main() {s := "Hello, world!"r := `Hello,
world!`fmt.Println("String literal:", s)fmt.Println("Raw string:", r)
}

2.12字符

Go中的字符类型为 rune,实际上是一个32位整数,用于表示Unicode字符。

package main
import "fmt"
func main() {c := 'A'fmt.Printf("Character: %c\n", c)
}

2.13类型别名

类型别名是为现有类型赋予一个新名称。

package main
import "fmt"
type MyInt int
func main() {var x MyInt = 10fmt.Println("Type alias value:", x)
}

2.14常用内置函数

2.14.1range

range 可以用来迭代数组、切片、字符串或映射。

2.14.2len

len 返回数组、切片、字符串或映射的长度

package main
import "fmt"
func main() {s := "hello"fmt.Println("Length of string:", len(s))for i, char := range s {fmt.Printf("Index %d: %c\n", i, char)}
}

2.15环绕行为(溢出)

整数运算如果超过了最大值,会从最大值回到最小值。

package main
import "fmt"
func main() {var i int8 = 127i++fmt.Println("Overflowed int8:", i) // 输出 -128
}

2.16布尔类型转换

布尔类型可以与其他类型进行转换。

package main
import "fmt"
func main() {var b bool = truevar i int = boolToInt(b)fmt.Println("Converted to int:", i)func() {var x int = 0fmt.Println("Boolean conversion:", x == 0)}()
}func boolToInt(b bool) int {if b {return 1}return 0
}

2.17结构体

结构体是一种组合数据类型,可以将不同类型的数据组合在一起。

package main
import "fmt"
type Person struct {Name stringAge  int
}func main() {alice := Person{"Alice", 30}fmt.Println("Person:", alice)
}

2.18接口

接口定义了一组方法的集合,任何实现了这些方法的类型都可以实现该接口。

package main
import "fmt"
type Shape interface {Area() float64
}type Circle struct {Radius float64
}func (c Circle) Area() float64 {return 3.14 * c.Radius * c.Radius
}func printArea(s Shape) {fmt.Println("Area:", s.Area())
}func main() {circle := Circle{Radius: 5}printArea(circle)
}

作者:CSDN-PleaSure乐事

希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!

这篇关于Golang基础语法学习与速成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1094447

相关文章

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

golang版本升级如何实现

《golang版本升级如何实现》:本文主要介绍golang版本升级如何实现问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录golanwww.chinasem.cng版本升级linux上golang版本升级删除golang旧版本安装golang最新版本总结gola

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和