走进 Go 语言基础语法 | 青训营 (1)

这篇具有很好参考价值的文章主要介绍了走进 Go 语言基础语法 | 青训营 (1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Powered by:NEFU AB-IN

走进 Go 语言基础语法 | 青训营

  • Go 语言入门指南:基础语法和常用特性解析
  • go.mod

    go.mod 这个文件里记录了当前项目里所有依赖包的 git 仓库地址以及对应的版本号,来解决了包依赖管理的问题,后续在构建编译时,就会根据对应的版本号去拉取依赖包。

    注意, 如果当前的项目是要给外部使用的,最好是配合 git 仓库命名,比如

    go mod init github.com/lincoln/manage
    
    go get ... // 获取包
    go mod tidy // 将会扫描所有我们 import 到的包,并生成对应的记录到 gomod 文件里
    
  • 笔记代码注释

    /*
     * @Author: NEFU AB-IN
     * @Date: 2023-08-06 09:44:15
     * @FilePath: \GoTest\1.go
     * @LastEditTime: 2023-08-06 22:57:59
     */
    package main
    
    import (
            "bufio"
            "fmt"
            "os"
            "strconv"
    )
    
    var (
            in  = bufio.NewReader(os.Stdin)
            out = bufio.NewWriter(os.Stdout)
    )
    
    func Read[T any]() T {
            var i T
            fmt.Fscan(in, &i)
            return i
    }
    
    const N int = 1e5 + 10
    
    // 函数
    func add(a int, b int) (v int, ok bool) {
            return a + b, ok
    }
    
    func add2(a *int) {
            *a += 2
    }
    
    // 结构体
    type sa struct {
            x int
            y int
    }
    
    // 结构体方法(类成员函数)
    func (a sa) add(x int) bool {
            return a.x == 2
    }
    
    func main() {
            defer out.Flush()
    
            // 1. variable
            a := "123"
            var b int = 2
            var c int64
            /*
                    int   类型大小为 8 字节
                    int8  类型大小为 1 字节
                    int16 类型大小为 2 字节
                    int32 类型大小为 4 字节
                    int64 类型大小为 8 字节
            */
            var d float64
    
            e := a + "foo"
    
            const s = "1231"
    
            fmt.Println(a, b, c, d) // 带换行
            fmt.Print(s)            // 不带换行
            fmt.Println(e)
    
            // 2. if else
    
            f := Read[int]()
            if f%2 == 0 {
                    print("even")
            } else {
                    print("odd")
            }
    
            // 3. 循环
            for i := 0; i < 10; i++ {
                    fmt.Print("!")
            }
    
            // 4. 数组 两种声明方式
            var g [N]int
            var h = [N]int{}
            fmt.Println(g[1:2], h[2:3])
    
            // 5. slice 切片
            j := make([]string, 3)
            j = append(j, "cc")
            fmt.Println(j[2:5])
    
            // 6. map
            mp := map[string]int{}
            mp["xw"] = 100
            mp["lsy"] = 12
            l, ok := mp["xw"]
            fmt.Println(l, ok)
    
            delete(mp, "xw")
            for key, val := range mp {
                    fmt.Println(key, val)
            }
    
            // 7. 给构体
            m := sa{x: 10}
            fmt.Println(m)
    
            // 8. 格式化
            fmt.Printf("f=%v\n", f)
            fmt.Printf("f=%+v\n", m)
            fmt.Printf("f=%#v\n", m)
    
            // 9. 转换
            y := 10
            z := "123"
    
            fmt.Println(strconv.Atoi(z))
            fmt.Println(strconv.Itoa(y))
    
    }
    

    另外字符串和数字互相转换的例子
    走进 Go 语言基础语法 | 青训营 (1),Go,BackEnd,golang,开发语言,后端文章来源地址https://www.toymoban.com/news/detail-630207.html

  • JSON处理

    package main
    
    import (
            "encoding/json"
            "fmt"
    )
    
    type Student struct {
            Name string `json:"name"` // 字段名的第一个字母大写
            Sid  string `json:"sid"`
    }
    
    func main() {
            s := Student{Name: "jonh" ,Sid: "10323"}
            //序列化
            p ,err := json.Marshal(s) // 序列化
            if err!=nil {
                    panic(err)
            }
            fmt.Println(string(p)) // 不加string的话就是一些16进制的编码
            // {"name":"jonh","sid":"10323"} 因为加了tag,导致变为小写
    
            //反序列化
            err = json.Unmarshal(p,&s)
            if err!=nil {
                    panic(err)
            } 
            fmt.Printf("%#v\n", s) // main.Student{Name:"jonh", Sid:"10323"}
    }
    
    
  • 时间库的使用

    package main
    
    import (
            "fmt"
            "time"
    )
    
    func main() {
            now := time.Now() //获取当前时间
            fmt.Printf("current time:%v\n", now)
            year := now.Year()     //年
            month := now.Month()   //月
            day := now.Day()       //日
            hour := now.Hour()     //小时
            minute := now.Minute() //分钟
            second := now.Second() //秒
            fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second)
    
            now1 := time.Now()            //获取当前时间
            timestamp1 := now1.Unix()     //时间戳
            timestamp2 := now1.UnixNano() //纳秒时间戳
            later := now1.Add(time.Hour)  // 当前时间加1小时后的时间
            fmt.Printf("现在的时间戳:%v\n", timestamp1)
            fmt.Printf("现在的纳秒时间戳:%v\n", timestamp2)
            fmt.Println(later)
    }
    
    
  • CF代码模板

    /*
     * @Author: NEFU AB-IN
     * @Date: 2023-08-06 22:57:54
     * @FilePath: \GoTest\tmp.go
     * @LastEditTime: 2023-08-06 23:05:28
     */
    
    package main
    
    import (
            "bufio"
            "fmt"
            "os"
    )
    
    var (
            in  = bufio.NewReader(os.Stdin)
            out = bufio.NewWriter(os.Stdout)
    )
    
    func Read[T any]() T {
            var i T
            fmt.Fscan(in, &i)
            return i
    }
    
    const N int = 1e5 + 10
    
    func solve() {
    
    }
    
    func main() {
            defer out.Flush()
            T := Read[int]()
            for T > 0 {
                    solve()
                    T--
            }
    }
    
    

到了这里,关于走进 Go 语言基础语法 | 青训营 (1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go 语言进阶与依赖管理 | 青训营

    Powered by: NEFU AB-IN GO语言工程实践课后作业:实现思路、代码以及路径记录 Go可以充分发挥多核优势,高效运行 Goroutine 是Go语言中的 协程 ,一种 轻量级的线程 ,由Go语言的运行时管理,可以实现高并发的程序设计,由于轻量级的特性,goroutine可以创建成千上万个,而且消耗

    2024年02月11日
    浏览(30)
  • Go语言实践案例之猜谜游戏| 青训营

    目录 一、程序要实现效果: 二、思路分析: 三、具体代码 四、可能存在的疑问 1.程序首先生成一个0-100的随机整数。 2.提示玩家进行猜测。 3.每次玩家需要输入一个数字,程序将会告诉玩家输入的数字与生成的数字的大小关系,并且让玩家再次猜测。 4.如果猜对了,则会告

    2024年02月09日
    浏览(31)
  • 【Go 基础篇】走进Go语言的面向对象编程世界

    欢迎各位编程爱好者们!今天我们将进入Go语言的面向对象编程(OOP)世界,一窥这门语言如何运用OOP思想来组织和构建程序。无论你是初学者还是有一些经验的开发者,本文都将为你揭示Go语言中的OOP特性、方法和最佳实践。 面向对象编程是一种程序设计范式,它以对象为

    2024年02月10日
    浏览(32)
  • Go 语言的实战案例 SOCKS5 代理 | 青训营

    Powered by: NEFU AB-IN GO语言工程实践课后作业:实现思路、代码以及路径记录 代理是指在计算机网络中,代理服务器充当客户端和目标服务器之间的中介。它接收来自客户端的请求,然后将请求转发给目标服务器,再将目标服务器的响应返回给客户端。 用途 : 匿名浏览 :Soc

    2024年02月10日
    浏览(30)
  • 【字节跳动青训营】后端笔记整理-3 | Go语言工程实践之测试

    **本人是第六届字节跳动青训营(后端组)的成员。本文由博主本人整理自该营的日常学习实践,首发于稀土掘金:🔗Go语言工程实践之测试 | 青训营 目录 一、概述 1、回归测试 2、集成测试 3、单元测试 二、单元测试 1、流程 2、规则 3、单元测试的例子 4、assert 5、覆盖率

    2024年02月15日
    浏览(29)
  • Go 语言面试题(一):基础语法

    := 声明+赋值 = 仅赋值 指针用来保存变量的地址。 例如 运算符,也称为解引用运算符,用于访问地址中的值。 &运算符,也称为地址运算符,用于返回变量的地址。 允许 Go 没有异常类型,只有错误类型(Error),通常使用返回值来表示异常状态。 Goroutine 是与其他函数或方

    2024年02月14日
    浏览(31)
  • Go语言入门指南:基础语法和常用特性(下)

    上一节,我们了解Go语言特性以及第一个Go语言程序——Hello World,这一节就让我们更深入的了解一下Go语言的**基础语法**吧! 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。 建议不要

    2024年02月12日
    浏览(28)
  • Go 语言入门指南:基础语法和常用特性解析

    代码解释: 变量声明和初始化: var a = \\\"initial\\\" :声明一个名为 a 的变量,初始值为字符串 “initial”。 var b, c int = 1, 2 :声明两个整数变量 b 和 c ,并分别初始化为 1 和 2。 var d = true :声明一个布尔变量 d ,初始值为 true 。 var e float64 :声明一个浮点数变量 e ,因为没有显

    2024年02月11日
    浏览(30)
  • Go语言入门指南:基础语法和常用特性解析(上)

    Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。 Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、Microsoft Windows等操作系统上。 因为Go语言的特性,

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包