Go 基础(三)| 青训营笔记

49 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 3 天

go基础语法

  1. Go 语言范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。

for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:

for key, value := range oldMap {
    newMap[key] = value
}

如果只想读取 key,格式如下:

for key := range oldMap
或者
for key, _ := range oldMap

如果只想读取 value,格式如下:

for _, value := range oldMap
  1. 语言结构体

结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。 如果要访问结构体成员,需要使用点号 . 操作符,格式为:

结构体.成员名"
package main  
  
import "fmt"  
  
type Books struct {  
   title string  
   author string  
   subject string  
   book_id int  
}  
  
func main() {  
   var Book1 Books        /* 声明 Book1 为 Books 类型 */  
  
   /* book 1 描述 */  
   Book1.title = "Go 语言"  
   Book1.author = "www.runoob.com"  
   Book1.subject = "Go 语言教程"  
   Book1.book_id = 6495407
   /* 打印 Book1 信息 */  
   printBook(Book1)
   }

3.Go 错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

error类型是一个接口类型,这是它的定义:

type error interface {
    Error() string
}

4.指针 Go语言中的指针是一种指向内存地址的变量,它允许程序通过指针访问内存中的值。

声明指针变量时,在变量类型前面加上*号,如:var p *int。可以使用&符号取得变量的内存地址,如:p := &x。可以使用*符号访问指针变量所指向的内存地址的值,如:fmt.Println(*p)

5.字符串 字符串拼接

 func main() {
 s1 := "hello" 
 s2 := "world" 
 s3 := s1 + " " + s2 
 fmt.Println(s3) // "hello world" 
 }

字符串长度: 可以使用len函数来获取字符串的长度

字符串比较: ==或者!=

字符串访问:[]运算符加数字

字符串切片: 可以使用s[start:end]来获取字符串的子串

6.json Go语言中有许多第三方库可用来处理JSON格式的数据,其中最流行和官方推荐的是"encoding/json"包。

这个包提供了Marshal和Unmarshal函数来进行JSON序列化和反序列化。

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string `json:"name"`
    Age int `json:"age"`
}

func main() {
    p := Person{Name: "Tom", Age: 18}
    b, _ := json.Marshal(p)
    fmt.Println(string(b))
    // Output: {"name":"Tom","age":18}

    var p2 Person
    json.Unmarshal(b, &p2)
    fmt.Println(p2)
    // Output: {Tom 18}
}

7.函数 Go语言中的函数是由一组语句组成的可重复调用的代码块。

函数定义格式:

func function_name( [parameter list] ) [return_types] {
   函数体
}
  1. 时间处理

Go语言中有一个"time"包来处理时间相关的操作。

这个包提供了很多函数和类型来处理时间,主要包括:

  • time.Now: 获取当前时间
  • time.Time: 时间类型
  • time.Duration: 时间间隔
  • time.Parse: 解析时间字符串
  • time.Format: 格式化时间 9.数字解析

Go语言中有一个"strconv"包来处理数字解析。

这个包提供了很多函数来将字符串转换为数字类型,主要包括:

  • strconv.ParseBool: 解析布尔值
  • strconv.ParseFloat: 解析浮点数
  • strconv.ParseInt: 解析整数
  • strconv.ParseUint: 解析无符号整数
  1. 进程信息 Go语言中有一个"os"包来获取进程信息。

这个包提供了很多函数来获取进程相关信息,主要包括:

  • os.Getpid: 获取当前进程的PID

  • os.Getppid: 获取当前进程的父进程PID

  • os.Getuid: 获取当前进程的用户ID

  • os.Getgid: 获取当前进程的组ID

  • os.Getgroups: 获取当前进程所属的所有组ID