[第一天打卡]GO的基础语法

79 阅读3分钟

一、《Go语言的读入读出》

1、GO语言的读入

[1]因为Scanln()遇到换行符或EOF的时候终止读取,所以在输入的时候只要按下回车键就会结束读取.

[2]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.

[3]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.

/*
[1]因为Scanln()遇到换行符或EOF的时候终止读取,所以在输入的时候只要按下回车键就会结束读取.
[2]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
[3]Scanf可指定分隔符,其中上面的是%s %d中间的空格就是分隔符。例如下面指定:作为分隔符.
*/
package main

import (
    "fmt"
)

func main() {
    fmt.Println("读入")
    var number int
    var name string
    _, err := fmt.Scan(&number, &name)
    fmt.Println("number:", number)
    fmt.Println("name:", name)
    fmt.Println(err)
}

2、GO语言的输出

Go语言中有多种输出方式,不同的输出适用场景不同。

(原内容,原内容+ln,原内容+f)

  • PrintXX()
  • FprintXX()
  • SprintXX()

二、GO语言的循环结构

package main

import (
    "fmt"
)

func main() {
    // GoLand只存在for一种循环
    fmt.Println("for循环")
    var i = 1
    for i < 3 {
       fmt.Println("i : ", i)
       i++
    }
    // continue和break依旧可以用
}

三、GO语言的判断结构

package main

import (
    "fmt"
)

func main() {
    fmt.Println("判断语句")
    var n = 1
    if n&1 == 1 {
       fmt.Println("这是一个奇数")
    } else {
       fmt.Print("这是一个偶数")
    }
}

四、GO语言的JSON操作

/*
在进行JSON操作时,需要保证结构体的公开字段(属性变量名)首字母大写
[1]JSON序列化操作语法
res1,err1 := json.Marshal(序列化对象)
fmt.Println(res1,err1)
[2]JSON反序列化操作语法
var res2 序列化对象类型
err2 = json.Unmarshal(JSON对象res1,反序列化存储对象res2)
fmt.Println(res2,err2)
*/
package main

import (
    "encoding/json"
    "fmt"
)

type MyStruct struct {
    Name string
    Id   int
}

func main() {
    fmt.Println("JSON操作")
    myStruct := MyStruct{"jom", 21}
    some, err := json.Marshal(myStruct)
    fmt.Println(string(some), err)
    var myStruct2 MyStruct
    err = json.Unmarshal(some, &myStruct2)
    fmt.Println(myStruct2, err)
}

五、GO语言的函数创建、调用

package main

import (
    "fmt"
)

func add(a int, b int) int {
    return a + b
}

func main() {
    fmt.Println(add(1, 2))
    number := add(1, 2)
    fmt.Println(number)
    nums := map[string]int{"1": 1, "2": 2, "3": 3}
    fmt.Println(nums)
    var x int
    var y bool
    x, y = nums["4"]
    fmt.Println(x, y)
}

六、GO语言结构体

/*
[1]已知结构体stu(name,id)
[2]结构体方法语法:

    ① 修改原结构体
    func (s *stu) 方法名(传入参数 传入参数类型) 返回值类型{
       方法体
    }
    ② 不修改原结构体
    func (s *stu) 方法名(传入参数 传入参数类型) 返回值类型{
       方法体
    }
*/
package main

import (
    "fmt"
)

type stu struct {
    name string
    num  int
}

func (s *stu) setNum(num int) bool {
    s.num = num
    return true
}
func main() {
    fmt.Println("结构体方法")
    stu1 := stu{name: "kom", num: 1}
    fmt.Println(stu1) // {kom 1}
    stu1.setNum(10)
    fmt.Println(stu1) // {kom 10}
}

七、GO语言的switch语句

package main

import (
    "fmt"
)

func main() {
    fmt.Println("这是switch语句")
    // 每个case默认break,不用像C/C++语言一样,在case之后写break
    var some = 1
    switch some {
    case 1:
       fmt.Println("1")
    case 2:
       fmt.Println("2")
    case 3:
       fmt.Println("3")
    default:
       fmt.Println("4")
    }
}

八、GO语言的进程处理

package main

import (
    "fmt"
    "os"
    "os/exec"
)

func main() {
    fmt.Println("进程信息")
    fmt.Println(os.Args) // 进程在执行时的命令行参数
    // [C:\Users\Administrator\AppData\Local\JetBrains\GoLand2024.2\tmp\GoLand___3go_build__go.exe]
    fmt.Println(os.Getenv("GOPATH")) // 获取GO的PATH
    // D:\program\GoLand\GOPATH
    buf, err := exec.Command("grep", "127.0.0.1", "/etc/hosts/").CombinedOutput() // 快速启动子进程,并获取相关信息
    //[] exec: "grep": executable file not found in %PATH%
    fmt.Println(buf, err)
}

九、GO语言的时间处理

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("时间处理")
    nowTime := time.Now()
    fmt.Println(nowTime)
    // 2024-11-04 09:10:57.5864502 +0800 CST m=+0.000000001
    // 获取当前时间点的一些信息
    fmt.Println(nowTime.Year())
    // 2024
    fmt.Println(nowTime.Month())
    // November
    fmt.Println(nowTime.Day())
    // 4
    fmt.Println(nowTime.Hour())
    // 9
    fmt.Println(nowTime.Minute())
    // 10
    fmt.Println(nowTime.Second())
    // 57
    fmt.Println(nowTime.Nanosecond())
    // 586450200
    fmt.Println(nowTime.Location())
    // Local
    fmt.Println(nowTime.YearDay())
    // 309
}