Golang基础语法学习与速成

news2024/11/27 9:40:44

作者: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 := 10
    y := 3
    fmt.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 = 25
    const 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 := 10
    if 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 := 1
    switch 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 = 10
    func() {
        var localVar int = 20
        fmt.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 float64
    fmt.Println("Zero value of float64:", f) // 输出 0.0

    f = 3.14
    fmt.Printf("Formatted float: %.2f\n", f) // 输出 3.14
}

2.9格式化动词

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

package main
import "fmt"
func main() {
    f := 3.14159
    fmt.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 = 10
    var 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 = 10
    fmt.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 = 127
    i++
    fmt.Println("Overflowed int8:", i) // 输出 -128
}

2.16布尔类型转换

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

package main
import "fmt"
func main() {
    var b bool = true
    var i int = boolToInt(b)
    fmt.Println("Converted to int:", i)

    func() {
        var x int = 0
        fmt.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 string
    Age  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乐事

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【鸿蒙学习】HarmonyOS应用开发者高级认证 - 自由流转

学完时间&#xff1a;2024年8月21日 学完排名&#xff1a;第2253名 一、基本概念 1. 流转 在HarmonyOS中&#xff0c;将跨多设备的分布式操作统称为流转。流转能力打破设备界限&#xff0c;多设备联动&#xff0c;使用户应用程序可分可合、可流转&#xff0c;实现如邮件跨设…

【时时三省】(C语言基础)指针进阶

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 指针的概念 1 .指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间。 2 .指针的大小是固定的4 /8个字节(32位平台/64位平台)。 3 .指针是有类型&#xff0c;指…

蓝队技能-应急响应篇挖矿病毒系统样本家族威胁情报异常定性排查分析处置封锁

知识点 1、应急响应-挖矿病毒-定性&排查 2、应急响应-挖矿病毒-应急&处置演示案例-蓝队技能-挖矿病毒-样本&定性&排查&应急&处置 挖矿病毒 随着虚拟货币的疯狂炒作&#xff0c;挖矿病毒已经成为不法分子利用最为频繁的攻击方式之一。 可以利用个人电…

【具体数学 Concrete Mathematics】1.1.1 汉诺塔问题

【具体数学 Concrete Mathematics】1.1.1 汉诺塔问题 汉诺塔问题的设定是&#xff1a;给定一个由8个圆盘 1 − 8 1-8 1−8( 1 1 1号圆盘最小&#xff0c; 8 8 8号圆盘最大)和三根柱子 A , B , C A,B,C A,B,C&#xff0c;从上向下这些圆盘大小逐渐递减&#xff08;即圆盘不能放在…

KNN算法与模型选择及调优

KNN算法-分类 1 样本距离判断 &#xff08;1&#xff09;欧式距离 欧式距离&#xff08;Euclidean distance&#xff09;&#xff0c;也称为欧氏度量&#xff0c;是用来衡量两个点之间直线距离的方法。 &#xff08;2&#xff09;曼哈顿距离 曼哈顿距离&#xff08;Manhatta…

探索CompletableFuture:高效异步编程的利器

目录 一、CompletableFuture基本功能安利 二、CompletableFuture使用介绍 &#xff08;一&#xff09;任务创建使用 1.supplyAsync创建带有返回值的异步任务 2.runAsync创建没有返回值的异步任务 &#xff08;二&#xff09;异步回调使用 1.异步回调&#xff1a;thenApp…

Android 修改SystemUI 音量条的声音进度条样式

一、前言 Android System UI 开发经常会遇到修改音量进度条样式的需求&#xff0c;主要涉及的类有VolumeDialogImpl与xml文件&#xff0c;接下来会逐步实现流程。先看看效果。 修改前 修改后 二、找到对应类 通过aidegen 打断点调试对应代码类VolumeDialogImpl定位到volume_d…

中国第一起名大师的老师颜廷利: 名字中的姓氏家谱字辈的最新解析

在探讨文化和文明的深层含义时&#xff0c;我们常常发现&#xff0c;对传统的尊重与现代价值观之间存在着一种微妙的张力。这种张力在一个简单的例子中得到了生动的体现&#xff1a;姓名的选择。 在古代社会&#xff0c;名字不仅仅是个体的标识&#xff0c;更是家族传承和社会结…

JavaScript_11_练习:小米搜索框案例(焦点事件)

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>练习&#xff1a;小米搜索框案例&#…

第十二届青少年蓝桥杯Python组省赛试题

一、选择题 1.设s’Hello Lan Qiao’,执行print(s[4:11])输出的结果为()。 *选择题严禁使用程序验证 A、lo Lan Qi B、lo Lan Q C、o Lan Qi D、o Lan Q 提示&#xff1a;切片 2.循环语句for i in range(8,-4,-2):执行了几次循环()。 *选择题严禁使用程序验证 A、4 B、5 C、6…

LabVIEW锅炉燃烧远程监控系统

随着信息技术的发展&#xff0c;远程监控技术已经广泛应用于各种工业过程。开发了一个基于LabVIEW和互联网技术的锅炉燃烧远程监控系统&#xff0c;该系统不仅提高了锅炉运行的安全性和效率&#xff0c;还具备了故障远程诊断的功能&#xff0c;为锅炉管理提供了一种全新的解决方…

[论文笔记]Improving Retrieval Augmented Language Model with Self-Reasoning

引言 今天带来一篇百度提出的关于提升RAG准确率的论文笔记&#xff0c;Improving Retrieval Augmented Language Model with Self-Reasoning。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 检索增强语言模型(Retrie…

谷歌浏览器自动填充密码怎么设置

谷歌浏览器的自动填充密码功能为用户提供了一种安全而便捷的在线体验&#xff0c;让用户在下次登录网站的时候&#xff0c;减去重复输入密码的麻烦。下面就给大家分享一下关于谷歌浏览器自动填充密码的相关内容&#xff0c;让你更加轻松的管理自己的账户。 谷歌浏览器自动填充密…

26.删除有序数组中的重复项---力扣

题目链接&#xff1a; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/remove-duplicates-from-sorted-array/descript…

使用maven快速生成打包文件

最近在部署基于SpringBoot开发的项目时&#xff0c;由于微服务较多&#xff0c;本地工程编译后只得出一个JAR包&#xff0c;部署起来实在不方便&#xff0c;因此总想着怎么偷偷懒&#xff0c;执行一次命令编译出整个部署的文件。先说结果&#xff0c;最后期望打包的目录如下&am…

【数据结构篇】~双向链表(附源码)

前言 学完了单链表&#xff0c;还有其他等着我们去攻克&#xff0c;链表其实分为8种 &#xff0c;共2 * 2 * 28种 之前的单链表是不带头单向不循环链表 一、双向链表 注意&#xff1a;这里的“带头”跟前面我们说的“头结点”是两个概念&#xff0c;实际前面的在单链表阶段称…

百度地图路书实现历史轨迹回放、轨迹回放进度、聚合点、自定义弹框和实时监控视频、多路视频轮巡播放

前言 分享一个刚做完项目集成技术&#xff0c;一个车辆行驶轨迹监控、行车视频监控、对特种车辆安全监管平台&#xff0c;今年政府单位有很多监管平台项目&#xff0c;例如&#xff1a;渣土车监控、租出车监管、危害气体运输车监管等平台&#xff0c;这些平台都有车辆行驶轨迹…

QT基础知识5

思维导图 client.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget), socket(new QTcpSocket(this))//给客户端实例化分配空间 {ui->setupUi(this);//初始化界面ui->msgEdit-&…

微盟年中报:聚焦主业降本增效,经调整净亏损同比大幅收窄81.4%

8月21日&#xff0c;微盟集团&#xff08;2013.HK&#xff09;发布2024年中期业绩报告。在充满挑战的市场环境中&#xff0c;公司积极进行业务布局优化调整&#xff0c;战略性聚焦核心业务&#xff0c;集团总收入达8.67亿元人民币&#xff0c;整体毛利率保持平稳。报告期内&…

语言基础/单向链表的构建和使用(含Linux中SLIST的解析和使用)

文章目录 概述简单的链表描述链表的术语简单实现一个单链表 Linux之SLIST机理分析结构定义单链表初始化单链表插入元素单链表遍历元素单链表删除元素 Linux之SLIST使用实践纯C中typedef重命名带来的问题预留 概述 本文讲述了数据结构中单链表的基本概念&#xff0c;头指针、头…